@
@ Reduce 3.6 "makebase".               Copyright (C) 1995-7, Codemist Ltd
@
@
@ This data file is used to create the makefile for REDUCE 3.6 based on
@ CSL. It is processed by the Codemist "makemake" utility, which should
@ be called as
@    makemake cpu opsys compiler debug -f <this-file> -o <destination>
@ where cpu, opsys, compiler and debug are options taken from the menu
@ given below.
@
@
@ The following apply at the start of lines...
@    "@ "         introduces a comment (note the blank after the "@")
@    "@set(word)  sets a new keyword as if it had been defined.
@    "@if"  etc   conditional inclusion within generated file.
@    "@error"     marks trouble
@
@ Through the bulk of a file (even in the middle of lines) the following
@ are converted: 
@
@    "@@"         expands to a single "@"
@    "@~"         expands to blank if "blank" has been set, or to nothing
@    "@""         expands to " or \" depending on "quote" (needed for
@                 the Unix shell, in places).
@    "@"          marks the start of a file-name, which is written in the
@                 master file using "/" as a directory separator, but
@                 DOS-like extensions .exe and Unix like .o
@    "@?"         queries the user for a value
@    "@!"         re-uses input from previous "@!" but maps input as filename
@    "\"          at the end of a line is a "make" continuation marker,
@                 interpreted as & if "watcom" is set.
@
@menu
@
@ First I will have a list of the target architectures that are supported
@
@item(acorn>machine_known) Acorn Archimedes/RISC-PC
@item(80x86>machine_known) 80386, 80486, Pentium
@item(sparc>machine_known) Sparc
@item(ultrasparc>sparc>machine_known) any Sparc with 64-bit support
@item(hp9000>machine_known) Hewlett Packard PA systems
@item(apollo>machine_known) Apollo Domain
@item(sgi>machine_known) Silicon Graphics Indi and compatibles
@item(clipper>machine_known) Intergraph Clipper
@item(88000>machine_known) Motorola 88000
@item(alpha>machine_known) DEC Alpha
@item(sr2201>machine_known) Hitachi SR2201 supercomputer
@
@ Next the associated operating systems
@
@item(riscos>os_known) Acorn's RISC-OS operating system
@item(unix>os_known) Unix (BSD, SYS-V, OSF etc)
@item(solaris>unix>os_known) Sun Solaris
@item(sunos>unix>os_known) Sun's older operating system
@item(linux>unix>os_known) Linux
@item(dos>os_known) DOS with suitable extender
@item(win95>os_known) Windows 95, win32s, win32
@item(win32>winnt>os_known) Windows 95, win32s, win32
@item(winnt>os_known) Windows NT in case I want that specifically (not 95)
@item(cygwin>gcc>os_known) Cygwin environment, using bash and gcc
@item(next>os_known) NeXT
@
@ Select a C compiler from the following list
@
@item(gcc>compiler_known) The GNU C compiler
@item(cc>compiler_known) default Unix C compiler
@item(microsoft>compiler_known>backslash) Microsoft Visual C++, version 5.0
@item(borland>compiler_known>backslash) Borland C/C++ version 4.0 etc
@item(watcom>compiler_known>backslash) Watcom C 10.5, 10.6, 11.0
@item(zortech>compiler_known>backslash) Zortech C++ (now Symantec)
@item(ncc>compiler_known) Norcroft C compiler
@
@ Optionally specify DEBUG for a version for use during testing
@
@item(noopt) Disable C compiler optimisation in case compiler bugs
@item(debug) Compile and link for debugging
@item(profile) Set C compiler profile options
@
@ Possible enabling of mpi (parallel computation) interface
@item(mpi)
@
@ Now a few convenient abbreviations for combinations I will use
@ more often than others...
@
@item(win>80x86>win95>watcom>machine_known>os_known>compiler_known) Windows 95, Watcom C
@item(gccunix>gcc>unix>os_known>compiler_known) GNU C with generic Unix
@item(ccunix>cc>unix>os_known>compiler_known) Generic Unix using "cc"
@
@endmenu
@
@
@if(acorn)
@if(compiler_known)
@ifnot(ncc)
@ifnot(gcc)
@error Unknown compiler for Acorn system
@endif
@endif
@else
@set(ncc)
@set(compiler_known)
@endif
@endif
@
@if(sparc)
@if(compiler_known)
@ifnot(gcc)
@ifnot(cc)
@error Unknown compiler for Sparc system (need gcc or cc)
@endif
@endif
@else
@set(cc)
@set(compiler_known)
@endif
@if(os_known)
@ifnot(unix)
@error Unix (sunos or solaris) needed for sparc
@ Windows NT on a sparc is not supported at this stage...
@endif
@else
@ I default to a solaris version here.
@set(solaris)
@set(unix)
@set(os_known)
@endif
@endif
@
@if(sr2201)
@if(compiler_known)
@ifnot(cc)
@error Unknown compiler for sr2201
@endif
@else
@set(cc)
@set(compiler_known)
@endif
@if(os_known)
@ifnot(unix)
@error Unix needed for sr2201
@endif
@else
@set(unix)
@set(os_known)
@endif
@
@ifnot(compiler_known)
@set(gcc)
@set(compiler_known)
@endif
@endif
@
@if(hp9000)
@if(os_known)
@ifnot(unix)
@error Unix needed for HP9000
@endif
@else
@set(unix)
@set(os_known)
@endif
@endif
@
@if(apollo)
@if(os_known)
@ifnot(unix)
@error Unix needed for Apollo
@endif
@else
@set(unix)
@set(os_known)
@endif
@endif
@
@if(sgi)
@if(os_known)
@ifnot(unix)
@error Unix needed for SGI
@endif
@else
@set(unix)
@set(os_known)
@endif
@endif
@
@if(clipper)
@if(os_known)
@ifnot(unix)
@error Unix needed for Clipper
@endif
@else
@set(unix)
@set(os_known)
@endif
@endif
@
@if(88000)
@if(os_known)
@ifnot(unix)
@error Unix needed for 88000
@endif
@else
@set(unix)
@set(os_known)
@endif
@endif
@
@if(alpha)
@if(os_known)
@ifnot(unix)
@ifnot(winnt)
@error Unix or Windows NT needed for Alpha
@endif
@endif
@else
@set(unix)
@set(os_known)
@endif
@endif
@
@if(linux)
@if(compiler_known)
@ifnot(gcc)
@error Linux uses GCC
@endif
@else
@set(gcc)
@set(compiler_known)
@endif
@endif
@
###########################################################################
#                                                                         #
# makefile for REDUCE 3.6 using CSL                                       #
#                                                                         #
###########################################################################

# The following lines indicates the place on your disc where the "cslbase"
# directory exists. This is the  place where the C sources files for CSL
# live. There are two versions here, the first should use Unix-like
# file name conventions (in particular "/" as a directory separator) while
# the second will (in some cases) be a host-specific translation.
@
@ I *must* have asserted "@set(backslash)" above here in the makebase
@ file if that is needed, otherwise file-name conversion will not apply
@ properly here.
@

UCSLBASE  = @?(The directory where the main CSL sources are, eg c:/xxx/cslbase)
CSLBASE   = @!

@
@
@ GCC can be run on many different sorts of machines and with several
@ different operating systems. I collect together all the options here.
@
@
@if(gcc)
@ifnot(cygwin)
@
@if(dos)
@set(80x86)
@endif
@
@if(80x86)
@set(escapequote)
@set(blank)
@

###########################################################################
# This is for GCC for DOS                                                 #
# NB using GNU "make" all filenames must use "/" rather than "\"          #
###########################################################################
@
CC        = gcc
@if(debug)
OPTFLAGS  = -g -DDEBUG=1
@elif(noopt)
OPTFLAGS  =
@else
#
# The GCC versions I have tried (recently) support -O3 (which does
# some in-lining). If you have trouble please revert to -O2 or even -O0
OPTFLAGS  = -O3
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c $(OPTFLAGS) -ansi -I$(CSLBASE) -DGCC386=1 $(MPIFLAGS)
ASM       = gcc
ASMFLAGS  = -c
LINK      = $(CC)
LFLAGS    =
LIBS      = -lm -lcurses
ASMSRC    = igcc386.s
ASMOBJ    = igcc386.o
ASMOBJDEP = igcc386.o
STORE     = -k8000
XSTORE    = -k8000
OUT       = -o
OUTOBJ    = -o
SYS       = sysdos
WX        = go32
RM        = del
MKDIR     = mkdir
COPY      = copy
@if(debug)
STRIP     = echo
@else
STRIP     = strip
@endif
###########################################################################
@
@elif(sparc)
@set(unix)

###########################################################################
# Sun SPARC, using GCC

@if(mpi)
CC       = mpicc
@else
CC       = gcc
@endif
@if(debug)
OPTFLAGS  = -g -DDEBUG=1
@elif(noopt)
OPTFLAGS  =
@else 
OPTFLAGS  = -O3
@endif
@if(profile)
# It appears that to use the profile option properly I need to make all
# my function names external (not static) for otherwise the "prof" program
# can not find their names with Sun. Furthermore I possibly have to avoid use
# if a shared library, hence the -static flag.
PROFFLAGS = -p -static -Dstatic=
@else
PROFFLAGS =
@endif
SPARCFLAGS =
@if(sunos)
SUNOSFLAGS = -I/usr/5include
@else
SUNOSFLAGS =
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -ansi -c $(PROFFLAGS) $(OPTFLAGS) $(SPARCFLAGS) $(SUNOSFLAGS) -I$(CSLBASE) $(MPIFLAGS)
@if(sunos)
SUNOSLIBS = -L/usr/5lib -lresolv
@else
SUNOSLIBS = -lsocket -lnsl
@endif
SUNOSLIBS1 = -lm -lc
@if(profile)
LIBS      = $(SUNOSLIBS) $(SUNOSLIBS1) -lcurses -static -p
@else
LIBS      = $(SUNOSLIBS) $(SUNOSLIBS1) -lcurses
@endif
@set(unixoptions)

###########################################################################
###########################################################################

@else
@set(unix)

###########################################################################

# Generic Unix with GCC. Note that if you use this you should review
# the file "machine.h" to ensure that CSL knows what name to report for
# your system. Also if the system you are running on needs more libraries
# scanned in the link-phase.

@if(mpi)
CC        = mpicc
@else
CC        = gcc
@endif
@if(debug)
OPTFLAGS  = -g -DDEBUG=1
@elif(noopt)
OPTFLAGS  =
@else 
OPTFLAGS  = -O3
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c $(OPTFLAGS) -ansi -I$(CSLBASE) $(MPIFLAGS)
LIBS      = -lm -lc -lcurses
@set(unixoptions)

###########################################################################
@endif
@endif
@endif
@if(cc)
@ifnot(sparc)
@set(unix)

###########################################################################

# Generic Unix with "cc". Note that if you use this you should review
# the file "machine.h" to ensure that CSL knows what name to report for
# your system. Also if the system you are running on needs more libraries
# scanned during the link phase. The Makefile create here will VERY
# probably need to be adjusted by hand.

@if(mpi)
CC        = mpicc
@else
CC        = cc
@endif
@if(debug)
OPTFLAGS  = -g -DDEBUG=1
@elif(noopt)
OPTFLAGS  =
@else 
OPTFLAGS  = -O
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c $(OPTFLAGS) -I$(CSLBASE) $(MPIFLAGS)
LIBS      = -lm -lcurses
@set(unixoptions)

###########################################################################
@endif
@endif
@
@ I will use Watcom C for DOS and for Windows 95 and NT
@
@
@if(watcom)
@
@if(machine_known)
@ifnot(80x86)
@error Watcom C is for use with 80x86 only
@endif
@else
@set(80x86)
@set(machine_known)
@endif
@
@if(os_known)
@ifnot(win95)
@ifnot(winnt)
@ifnot(dos)
@error Watcom C is for DOS, Windows 95 or Windows NT
@endif
@endif
@endif
@else
@set(win95)
@set(os_known)
@endif
@
@set(obj)
@set(blank)
@set(linkcomma)

###########################################################################
# This is for 32-bit operation with Watcom C version 10.5, 10.6, 11.0     #
# Note that other release of Watcom C need command line options changed   #
###########################################################################

@if(win95)
@set(cwin)
@elif(winnt)
@set(cwin)
@endif
CC        = *wcc386
@if(debug)
OPTFLAGS  = -d2 -d_DEBUG -DDEBUG=1
@elif(noopt)
OPTFLAGS  =
@else
!ifeq __VERSION__ 11
OPTFLAGS  = -oneatx -oh
!else
OPTFLAGS  = -oatx
!endif
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
@if(win95)
CCFLAGS   = -d_MBCS=1 -d_WINDOWS=1 -dWINDOWS_NT=1 -bt=nt -DCWIN=1
@elif(winnt)
CCFLAGS   = -d_MBCS=1 -d_WINDOWS=1 -dWINDOWS_NT=1 -bt=nt -DCWIN=1
@else
CCFLAGS   = -d_MBCS=1 -bt=dos4g
@endif
CFLAGS    = $(OPTFLAGS) $(CCFLAGS) -i=$(CSLBASE) $(MPIFLAGS) -5r-zp4-ei-w3-bm-fhq
CPP       = *wpp386
!ifeq __VERSION__ 11
CPPFLAGS  = $(CFLAGS) -xs
!else
CPPFLAGS  = $(CFLAGS) -xs-zo
!endif
ASM       = *wasm
ASMFLAGS  = -mf -5r -w4 -zq
LINK      = *wlink
@if(debug)
LDEBUG    = debug all
@else
LDEBUG    =
@endif
@if(dos)
LSYS      = dos4g
LIBS      =
LFLAGS    = system $(LSYS) option map,eliminate,stack=256K $(LDEBUG) file
@else
LSYS      = nt_win
@if(debug)
LIBS      = REFERENCE _wstart2_
LFLAGS    = system $(LSYS) option map,eliminate,stack=256K $(LDEBUG) file
@else
LIBS      = REFERENCE _wstart2_
LFLAGS    = system $(LSYS) option map,eliminate,stack=256K $(LDEBUG) file
@endif
@endif
ASMSRC    = imulwat.asm
ASMOBJ    = imulwat.obj
ASMOBJDEP = imulwat.obj
STORE     = -k8000
XSTORE    = -k8000
# The .SYMBOLIC directive tells Watcom "wmake" not to fuss when a
# target in the makefile does not correspond to a file that will get
# create by activating it.
SYMBOLIC  = .SYMBOLIC
OUT       = name
OUTOBJ    = -fo=
@if(win95)
SYS       = syscwin
# With SOME releases of Windows 95 and Watcom C it was important to
# use "start /w" when launching windowed applications from a makefile
# because otherwise make just started the task and continued with its
# work without waiting for the job to complete. But with the versions
# I have tried most recently the use of "start /w" forces exactly the
# effect it was supposed to avoid. Oh Dear! Adjust your makefile if you
# have trouble, please. I am not certain if this is a Watcom 10.6 vs 11.0
# issue of a Windows 95 vs. NT one.
!ifeq __VERSION__ 11
WX        =
!else
WX        = start /w
!endif
@elif(winnt)
SYS       = syscwin
WX        =
@else
SYS       = sysdos
WX        =
@endif
RM        = del
MKDIR     = mkdir
COPY      = copy
STRIP     = -echo
###########################################################################

@endif
@
@
@
@ By "microsoft" I mean Microsoft Visual C++, for use with Windows 95
@ and Windows NT. I will NOT use this compiler for DOS
@
@
@if(microsoft)
@
@if(machine_known)
@ifnot(80x86)
@error Microsoft C is for use with 80x86 only
@endif
@else
@set(80x86)
@set(machine_known)
@endif
@
@if(os_known)
@ifnot(win95)
@ifnot(winnt)
@error Microsoft C is for Windows 95 or Windows NT
@endif
@endif
@else
@set(win95)
@set(os_known)
@endif
@
@set(obj)

###########################################################################
#                                                                         #
# This "makefile" is for Win32 and  Win32s (using Visual C++ 5.0).        #
#                                                                         #
###########################################################################

CC	  = cl
@if(debug)
OPTFLAGS  = -Od -Zi -DDEBUG=1
@elif(slow)
OPTFLAGS  =
@else
OPTFLAGS  = -Ox2 -G5r
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS	  = $(OPTFLAGS) -c -W3 -DWINDOWS_NT=1 -I$(CSLBASE) -DCWIN=1 $(MPIFLAGS)
CPP       = cl
CPPFLAGS  = $(CFLAGS)
LINK      = cl
@if(debug)
LFLAGS    =
@else
LFLAGS    =
@endif
LIBS      = nafxcw.lib libc.lib msvcrt.lib kernel32.lib shell32.lib wsock32.lib \
		user32.lib gdi32.lib winspool.lib libcmt.lib \
		comdlg32.lib comctl32.lib winmm.lib advapi32.lib
@if(debug)
TAIL      = -link -debug -nodefaultlib -subsystem:windows
@else
TAIL      = -link -nodefaultlib -subsystem:windows
@endif
CSLRES    = csl.res
R36RES    = r36.res
DEMORES   = demored.res
FRONTRES  = r36front.res
@set(ressym)
OUT       = -o
OUTOBJ    = -Fo
ASM       = $(CC)
ASMFLAGS  = $(CFLAGS)
ASMSRC    = imulvc.c
ASMOBJ    = imulvc.obj
ASMOBJDEP = imulvc.obj
@if(win95)
SYS       = syscwin
WX        = start /w
@elif(winnt)
SYS       = syscwin
WX        =
@else
SYS       = sysdos
WX        =
@endif
STORE     = -k8000
XSTORE    = -k8000
RM        = del
MKDIR     = mkdir
COPY      = copy
STRIP     = -echo
@endif
@
@
@if(borland)
@
@if(machine_known)
@ifnot(80x86)
@error Borland C is for use with 80x86 only
@endif
@else
@set(80x86)
@set(machine_known)
@endif
@
@if(os_known)
@ifnot(dos)
@ifnot(dos)
@error Borland C is set up for Win32 console apps (ie DOS) only at present
@endif
@endif
@else
@set(dos)
@set(os_known)
@endif
@
@set(obj)

###########################################################################
#                                                                         #
# This "makefile" is for console applications (95 & NT) with Borland 4.0  #
#                                                                         #
###########################################################################

CC	  = bcc32
@if(debug)
OPTFLAGS  =
@elif(slow)
OPTFLAGS  =
@else
# Borland C 4.0 (I know that is an old release but it is the newest one I have
# tried) refuses to compile my code if it is asked to optimise. So I
# will not press the matter.
OPTFLAGS  =
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS	  = $(OPTFLAGS) -c -4 -N -I$(CSLBASE) $(MPIFLAGS)
CPP       = bcc32
CPPFLAGS  = $(CFLAGS)
LINK      = bcc32
@if(debug)
LFLAGS    =
@else
LFLAGS    =
@endif
LIBS      =
TAIL      =
CSLRES    = csl.res
R36RES    = r36.res
DEMORES   = demored.res
FRONTRES  = r36front.res
OUT       = -e
OUTOBJ    = -o
ASM       = $(CC)
ASMFLAGS  = $(CFLAGS)
ASMSRC    =
ASMOBJ    =
ASMOBJDEP = notused.obj
SYS       = sysdos
WX        =
STORE     = -k8000
XSTORE    = -k8000
RM        = del
MKDIR     = mkdir
COPY      = copy
STRIP     = -echo
@endif
@
@
@ I will only use Zortech for DOS and 80x86 systems in 32 bit mode.
@
@
@if(zortech)
@
@if(machine_known)
@ifnot(80x86)
@error Zortech C++ is only for use with 80x86
@endif
@else
@set(80x86)
@set(machine_known)
@endif
@
@if(os_known)
@ifnot(dos)
@error Zortech C++ is only for use with DOS
@endif
@else
@set(dos)
@set(os_known)
@endif
@

###########################################################################
# This is for 32-bit operation with Zortech C++ version 3.0               #
#                                                                         #
# This is set up for use with Zortech C++ release 3.0r4 (well, that       #
# is the release of the compiler that I have at present, and earlier      #
# versions had a few bugs left).  To provide for virtual memory on a      #
# 386, 486 or Pentium I use the FlashTek extension of the DOS extender    #
# used with Zortech C, and the linker commands scan a few object files    #
# relating to that.  If you are rebuilding this system and do not have    #
# the Flashtek code then all you lose is virtual memory support and       #
# the changes to this makefile are pretty small.                          #
# Now somewhat out of date... but start here if you have Symantec C++.    #
###########################################################################

CC        = ztc
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c -A -mx -o -I$(CSLBASE) $(MPIFLAGS)
ASM       = ztc
ASMFLAGS  = -mx -c
LINK      = $(CC)
LFLAGS    = -mx
LIBS      = x32v.lib
ASMSRC    = imuldos.asm
ASMOBJ    = imuldos.obj
ASMOBJDEP = imuldos.obj
STORE     = -k8000
XSTORE    = -k8000
@endif
@
@if(hp9000)

###########################################################################
# HP workstations (eg HP/9000/735)

@if(mpi)
CC        = mpicc
@else
CC        = c89
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c +Obb3000 +O3 -Wl,-a,archive -I$(CSLBASE) $(MPIFLAGS)
LIBS      = -lm -lc -lcurses -lresolv

@set(unixoptions)
###########################################################################
@endif
@
@if(sr2201)

###########################################################################
# Hitachi SR2201 supercomputer

@if(mpi)
CC        = mpicc
@else
CC        = cc +BTLN1
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c +O4 +ESlit +Ol +Oprefetch -I$(CSLBASE) $(MPIFLAGS)
LIBS      = -lm -lc -lcurses

@set(unixoptions)
###########################################################################
@endif
@
@if(sparc)
@if(cc)

###########################################################################

# Sun Super SPARC, using the Sun C compiler.

@if(mpi)
CC        = mpicc
@else
# I get conflicting reports about where to find the C compiler...
# please adjust this file by hand if you need to.
CC        = /opt/EA/SUNWspro/bin/cc
@endif
@if(ultrasparc)
@if(debug)
SPARCOPTS = -g -dalign -xtarget=ultra1/170 -DLONG_LONG_64=1 -DMULDIV64=1 -DDEBUG=1
SPARCLIBS = -lfast -lm
@else
SPARCOPTS = -xO5 -xdepend -dalign -xtarget=ultra1/170 -DLONG_LONG_64=1 -DMULDIV64=1
SPARCLIBS = -lfast -lm
@endif
@else
@if(debug)
SPARCOPTS = -g -DDEBUG=1
SPARCLIBS = -lm -lc
@else
SPARCOPTS = -xO4
SPARCLIBS = -lm -lc
@endif
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c $(SPARCOPTS) -DBSD_LIB=1 -I$(CSLBASE) $(MPIFLAGS)
LIBS      = $(SPARCLIBS) -lcurses
@set(unixoptions)

###########################################################################
@endif
@endif
@
@if(alpha)

###########################################################################

# DEC Alpha, with OSF (tested on 1.3) and the DEC C compiler. Note that
# this is a 64-bit machine, but I use it with the "-taso" linker option
# so that I run in a 32-bit address space.

@if(mpi)
CC        = mpicc
@else
CC        = cc
@endif
@if(debug)
OPTFLAGS  = -g -DDEBUG=1
@elif(noopt)
OPTFLAGS  =
@else 
OPTFLAGS  = -O2
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS     = -c $(OPTFLAGS) -std1 -Olimit 3000 -I$(CSLBASE) $(MPIFLAGS)
LIBS       = -lm -lcurses -taso
@set(unixoptions)

###########################################################################
@endif
@
@if(next)

###########################################################################
# NeXT, tested on a Pentium Pro installation

CC        = cc
OPTFLAGS  = -O2
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c $(OPTFLAGS) -I$(CSLBASE) $(MPIFLAGS)
LIBS      = -lm -lcurses -ltermcap

@set(unixoptions)
###########################################################################
@endif
@
@
@if(apollo)

###########################################################################

# Apollo

CC        = cc
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c -A ansi -D__APOLLO__=1 -I$(CSLBASE) $(MPIFLAGS)
LIBS      = -lcurses

# Also note that in 1Q 1993 the -O flag must not be used for char.c or
# gc.c as the Apollo C compiler optimiser is buggy.
# It seems OK for the other sections.  Presumably a later release of the
# compiler will fix the difficulty.  Please hand-compile that section
# using "make -n char.o" to guide you.

@set(unixoptions)

###########################################################################
@endif
@
@if(sgi)
###########################################################################

# Silicon Graphics, using the SGI C compiler
# I have not yet worked out how to exploit -O3 or -O4 optimisation
# but see sketches later down this file where I have tried same for
# the DEC Alpha.

CC        = cc
@if(debug)
OPTFLAGS  = -g -DDEBUG=1
@elif(noopt)
OPTFLAGS  =
@else 
OPTFLAGS  = -O2
@endif
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c -ansi -DSGICC=1 $(OPTFLAGS) -Olimit 3000 -I$(CSLBASE) $(MPIFLAGS)
LIBS      = -lm -lc -lcurses

###########################################################################

@set(unixoptions)
@endif
@
@if(clipper)
###########################################################################

# Intergraph Clipper, using the Norcroft C compiler

CC        = ncc
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
CFLAGS    = -c -I$(CSLBASE) $(MPIFLAGS)
LIBS      = -lcurses

###########################################################################

@set(unixoptions)
@endif
@
@if(unixoptions)

###########################################################################

@set(blank)
@set(escapequote)
SHELL     = /bin/sh
LINK      = $(CC)
@if(profile)
@if(debug)
LFLAGS    = -p -g
@else
LFLAGS    = -p
@endif
@else
@if(debug)
LFLAGS    = -g
@else
LFLAGS    =
@endif
@endif
OUT       = -o
OUTOBJ    = -o
ASM       = $(CC)
ASMFLAGS  = $(CFLAGS)
ASMSRC    =
ASMOBJ    =
ASMOBJDEP = notused.obj
SYS       = sysunix
STORE     = -k8000
XSTORE    = -k8000
RM        = rm
MKDIR     = mkdir
COPY      = cp
@if(debug)
STRIP     = echo
@else
STRIP     = strip
@endif
WX        =

###########################################################################

@endif
@if(cygwin)
###########################################################################

# Cygwin32 running on Windows 95, 98 or NT. First tested with
# Cygnus beta 19.1.
# This is also going to be tested with EGCS installed rather than the
# earlier version of gcc, and soon it will require ncurses to have been
# installed too.
#
# This will produce a command-line-only version of REDUCE.

# ensure that the current directory is on our search path (by default
# it is not)
export PATH := .:$(PATH)

# permit the name "reduce" spelt in lower case to be used as well
# as REDUCE
export reduce := $(REDUCE)

CC        = gcc
@if(mpi)
MPIFLAGS  = -DUSE_MPI=1
@else
MPIFLAGS  =
@endif
OPTFLAGS  = -O3
# define NO_HELP_SYSTEM because curses is not yet part of standard
# cygnus release
CFLAGS    = -c -ansi $(OPTFLAGS) -I$(CSLBASE) $(MPIFLAGS) -DNO_HELP_SYSTEM=1
#LIBS     = -lcurses
LIBS      =
###########################################################################

@set(blank)
@set(escapequote)
# For the following line to behave properly you MUST put a copy of
# the shell in what a Windows user would call C:\bin
SHELL     = /bin/sh
LINK      = $(CC)
@if(profile)
@if(debug)
LFLAGS    = -p -g
@else
LFLAGS    = -p
@endif
@else
@if(debug)
LFLAGS    = -g
@else
LFLAGS    =
@endif
@endif
OUT       = -o
OUTOBJ    = -o
ASM       = $(CC)
ASMFLAGS  = $(CFLAGS)
ASMSRC    =
ASMOBJ    =
ASMOBJDEP = notused.obj
SYS       = syscyg
STORE     = -k8000
XSTORE    = -k8000
RM        = rm
MKDIR     = mkdir
COPY      = cp
@if(debug)
STRIP     = echo
@else
STRIP     = strip
@endif
WX        =

###########################################################################

@endif
@
@if(riscos)
@error Acorn parts of the makefile not reconstructed yet

###########################################################################
#                                                                         #
# This "makefile" is for Acorn RISC-OS                                    #
#                                                                         #
###########################################################################

@set(acorn)

#
# makefile for REDUCE 3.6 using CSL
# This is for RISC-OS on an Acorn Archimedes
#

CC        = cc
CFLAGS    = -c -fah -I$.risc_oslib -I$(CSLBASE)
LFLAGS    =
LINK      = link
LIBS      = $.risc_oslib.o.risc_oslib $.clib.o.stubs
SYS       = sysarm
STORE     = -k8000
XSTORE    = -k8000
ASMOBJ    =
OBJ       = o
RM        = delete
MKDIR     = cdir
COPY      = copy
STRIP     = squeeze
WX        =

###########################################################################
###########################################################################
@endif
@
@if(win95)
@set(cwin)
@set(resourcefile)
@endif
@
@if(winnt)
@set(cwin)
@set(resourcefile)
@endif

###########################################################################
###########################################################################
#                                                                         #
# This is the main bulk of the "makefile" for building Reduce 3.6 and CSL #
# on MSDOS, Windows and Unix.  This part of the file expects a number of  #
# symbols to have been defined:                                           #
#                                                                         #
# CSLBASE   = file-path for CSLBASE directory                             #
# CC        = The C compiler to use                                       #
# CFLAGS    = Flags for C compiler when compiling CSL                     #
# LINK      = Linker to use                                               #
# LFLAGS    = Flags for linker                                            #
# LIBS      = Libraries to quote to linker                                #
# OUT       = "-o" or "-out:"   See link commands                         #
# OUTOBJ    = "-o" often : where to put object code from C compilation    #
# ASM       = The assembler to use                                        #
# ASMFLAGS  = Flags for the assembler                                     #
# ASMSRC    = Assembly code source file to use                            #
# ASMOBJ    = Object file for above (or NULL if no assembly used)         #
# ASMOBJDEP = Ditto, but may not be NULL                                  #
# SYS       = name of system-specific file (sysdos or sysnt etc)          #
# STORE     = Memory option to pass to CSL (-k2500 is minimum)            #
# XSTORE    = Memory for the rebuild job that generates C code            #
# RM        = del for DOS, = rm for Unix                                  #
# MKDIR     = mkdir                                                       #
# COPY      = copy for DOS, = cp for Unix                                 #
# STRIP     = echo for DOS, = strip for Unix                              #
# SYMBOLIC  = .SYMBOLIC is using Watcom's "make" utility                  #
# WX        = wx for Windows 3.1, null in all other cases                 #
#                                                                         #
# The master version of this file is called "makebase" and is used to     #
# create both DOS and Unix makefiles.  Use the Codemist "makemake"        #
# program to perform the conversion - eg                                  #
#     makemake -f makebase -o makemake.386 watcom dos                     #
#     makemake -f makebase -o Makefile.sgi sgi                            #
# Just "makemake -f makebase" gives list of systems supported             #
###########################################################################
###########################################################################



###########################################################################
###########################################################################
#
# The main final target is @r36.img, the image file for full REDUCE.
# If you want to rebuild stage-by-stage (eg while testing), try the
# sequence
#    make @csl.exe                compiles and links C coded kernel
#    make @csl.img                builds compiler image on top of above
#    make @slowr36.img            makes bootstrap REDUCE
#                                 (roughly twice as slow as final one)
#                                 only used for system recompilation.
#    make ccode                   runs test file to collect statistics
#                                 and create files u*.c and u*.lsp
#                                 out of hot-spot parts of REDUCE.  Note that
#    >>>>>>>>>>>>>>>>>>>          this is not done automatically by the main
#    >>>>   N. B.   >>>>          set of "make" dependences, since the
#    >>>>>>>>>>>>>>>>>>>          files u*.* provided are probably OK - but
#                                 you need to do it again if the main REDUCE
#                                 sources are altered
#    make @fasl36.img             final compilation of most of REDUCE
#    make @r36.exe                build final executable binary
#    make @r36.img                build final image file
#    make testall                 runs test files, output to log directory
#
###########################################################################
###########################################################################


#
# C is another name for CSLBASE, the directory that CSL source files live
# in. I introduce it here mainly because $(C) is so much more compact
# then $(CSLBASE).
#

C =     $(CSLBASE)

#
# DOBJS is a list of all the object files that are common to all variants
# on the system built here
#

DOBJS =		@arith01.o @arith02.o @arith03.o @arith04.o \
		@arith05.o @arith06.o @arith07.o @arith08.o \
		@arith09.o @arith10.o @arith11.o @arith12.o \
		@char.o @csl.o @cslmpi.o @eval1.o @eval2.o \
		@eval3.o @eval4.o @fns1.o @fns2.o @fns3.o \
		@print.o @read.o @restart.o $(ASMOBJ) \
@if(cwin)
		@$(SYS).o @c_applic.o @c_text.o \
		@c_graph.o @c_render.o @c_viewpt.o
@else
		@$(SYS).o
@endif

CDOBJS =	@arith01.o,@arith02.o,@arith03.o,@arith04.o,\
		@arith05.o,@arith06.o,@arith07.o,@arith08.o,\
		@arith09.o,@arith10.o,@arith11.o,@arith12.o,\
		@char.o,@csl.o,@cslmpi.o,@eval1.o,@eval2.o,\
		@eval3.o,@eval4.o,@fns1.o,@fns2.o,@fns3.o,\
		@print.o,@read.o,@restart.o,$(ASMOBJ),\
@if(cwin)
		@$(SYS).o,@c_applic.o,@c_text.o,\
		@c_graph.o,@c_render.o,@c_viewpt.o
@else
		@$(SYS).o
@endif

#
# OBJS adds in the files used when I am not building a demonstration-mode CSL
#

OBJS =		$(DOBJS) @fasl.o @gc.o @preserve.o

COBJS =		$(CDOBJS),@fasl.o,@gc.o,@preserve.o

#
# UOBJS come from that code that is compiled from Lisp into C
#

UOBJS =		@u01.o @u02.o @u03.o @u04.o @u05.o \
		@u06.o @u07.o @u08.o @u09.o @u10.o \
		@u11.o @u12.o

CUOBJS =	@u01.o,@u02.o,@u03.o,@u04.o,@u05.o,\
		@u06.o,@u07.o,@u08.o,@u09.o,@u10.o,\
		@u11.o,@u12.o


###########################################################################
###########################################################################
#
# "r36.img" is an image file for the main parts of Reduce

@r36.img:	@fasl36.img @r36.exe
	$(WX) r36 $(STORE) -v -z -i @fasl36.img -o- @../cslsrc/r36.lsp -- @r36.log
	-$(MKDIR) log

# "make patches" can be used after the "src/patches.red" file has changed

patches:	@../src/patches.red $(SYMBOLIC)
	$(WX) r36 $(STORE) -v @../cslsrc/mkpatch.red -- mkpatch.log
	$(WX) r36 $(STORE) -v -i- -o @fasl36.img @../cslsrc/mkpatch1.red -- mkpatch1.log
	$(WX) r36 $(STORE) -v -z -i @fasl36.img -o- @../cslsrc/r36.lsp -- @r36.log


#
# "make testall" tests the final production version of Reduce
#

testall:	@log/algint.log @log/applysym.log @log/arnum.log @log/assist.log @log/avector.log \
		@log/boolean.log @log/cali.log @log/camal.log @log/changevr.log \
		@log/compact.log @log/complex.log @log/crack.log @log/cvit.log \
		@log/decompos.log @log/defint.log @log/desir.log @log/dfpart.log \
		@log/dummy.log @log/elem.log @log/excalc.log @log/factor.log \
		@log/fide.log @log/fps.log @log/gcd.log @log/gentran.log \
		@log/groebner.log @log/ideals.log @log/ineq.log @log/int.log \
		@log/invbase.log @log/laplace.log @log/lie.log @log/limits.log \
		@log/linalg.log @log/math.log @log/matrix.log @log/modsr.log \
		@log/ncpoly.log @log/normform.log @log/numeric.log @log/odesolve.log \
		@log/orthovec.log @log/pf.log @log/physop.log @log/pmrules.log \
		@log/randpoly.log @log/reacteqn.log @log/reduce.log @log/residue.log @log/rlfi.log \
		@log/rlisp88.log @log/roots.log @log/rounded.log @log/rsolve.log \
		@log/scope.log @log/sets.log @log/solve.log @log/spde.log \
		@log/specfn.log @log/sum.log @log/symmetry.log @log/taylor.log \
		@log/tps.log @log/tri.log @log/trigsimp.log @log/wu.log @log/xcolor.log @log/xideal.log \
		@log/zeilberg.log @log/ztrans.log $(SYMBOLIC)
	-echo all tests done



###########################################################################
###########################################################################
#
# The targets from here on down are used in the process of doing a full
# system re-build

# @fasl36.img is a file needed during a re-build of Reduce. It contains
# compiled versions of all the Reduce modules.

@fasl36.img:	@csl.exe @slowr36.img
	-$(RM) @fasl36.img
	$(WX) csl $(STORE) -v -i @slowr36.img -o @fasl36.img \
		@../cslsrc/fasl36.red -- @fasl36.log

# "make personal" downgrades a full version of Reduce to make a"personal"
# version (without the compiler).

personal:	@r36.exe @r36.img $(SYMBOLIC)
	$(COPY) @r36.exe @../r36.exe
	$(COPY) @r36.img @../r36.img
	$(WX) @../r36 @../cslsrc/remcmp.lsp

# "make rl" manufactures an image file that contains just an Rlisp parser

rl:	$(SYMBOLIC) @rlisp.exe @rlisp.img

@rlisp.exe: $(SYMBOLIC) @csl.exe
	$(COPY) @csl.exe @rlisp.exe

@rlisp.img:	@rlisp.exe
	$(WX) rlisp $(STORE) -v -z -o rlisp.img \
		@../cslsrc/mkrlisp.lsp -D@@cslbase="$(C)" -- rlisp.log

#
# @r36.exe can only be built when all the user-generated C code has been
# built.
#

@r36.exe:	@bytes.o $(OBJS) \
@if(microsoft)
		$(R36RES) \
@endif
		$(UOBJS)
@if(borland)
	$(LINK) -er36.exe @@@../cslsrc/borr36.lnk
@else
@if(linkcomma)
	$(LINK) $(LFLAGS) @bytes.o,$(COBJS),$(CUOBJS) $(LIBS) $(OUT)@~@r36.exe $(TAIL)
@else
@if(ressym)
	$(LINK) $(LFLAGS) @bytes.o $(OBJS) $(UOBJS) $(R36RES) $(LIBS) $(OUT)@~@r36.exe $(TAIL)
@else
	$(LINK) $(LFLAGS) @bytes.o $(OBJS) $(UOBJS) $(LIBS) $(OUT)@~@r36.exe $(TAIL)
@endif
@endif
@endif
@if(resourcefile)
@if(watcom)
	wrc -i@../cslsrc -i@$(C) -bt=nt @../cslsrc/r36.rc @r36.exe
@endif
@endif
	$(STRIP) @r36.exe

@if(resourcefile)
@if(microsoft)
csl.res:	@../cslsrc/csl.rc @$(C)/cwin.rc
	rc -i@../cslsrc -i@$(C) -focsl.res @../cslsrc/csl.rc

r36.res:	@../cslsrc/r36.rc @$(C)/cwin.rc
	rc -i@../cslsrc -i@$(C) -for36.res @../cslsrc/r36.rc

demored.res:	@../cslsrc/demored.rc @$(C)/cwin.rc
	rc -i@../cslsrc -i@$(C) -fodemored.res @../cslsrc/demored.rc

@endif
@endif
#
# slowr36 is a version of Reduce used just to compile the final version.
# It is larger and slower than the final release version, and will not have
# all the optional modules built into it.
#

@slowr36.img:	@csl.exe @../cslsrc/slowr36.lsp @../src/boot.sl \
		@../src/cslprolo.red @../src/module.red \
		@../src/rlisp.red @../src/cslrend.red @../src/poly.red \
		@../src/alg.red @../src/arith.red @../src/mathpr.red \
		@../src/entry.red
	$(WX) csl $(STORE) -o @slowr36.img -v -z \
		@../cslsrc/slowr36.lsp -D@@cslbase="$(C)" -- @slowr36.log

#
# A few targets here may help me tidy up my filespace from time to time
#

cleansmall: $(SYMBOLIC)
	-$(RM) @slowr36.img

clean: $(SYMBOLIC)
	-$(RM) @slowr36.img
	-$(RM) @r36.exe
	-$(RM) @fasl36.img
	-$(RM) @r36.img

#
# demored is a demonstration version of Reduce with built-in resource
# limitations.
#

demored:	@csl.exe @slowr36.img @bytes.o $(DOBJS) $(SYMBOLIC) \
@if(microsoft)
		$(DEMORES) \
@endif
		@stubs.o
	$(CC) $(CFLAGS) @$(C)/demo.c
@if(borland)
	$(LINK) -edemored.exe @@@../cslsrc/bordemo.lnk
@else
@if(linkcomma)
	$(LINK) $(LFLAGS) @bytes.o,$(CDOBJS),@stubs.obj,@demo.o $(LIBS) $(OUT)@~@demored.exe $(TAIL)
@else
@if(ressym)
	$(LINK) $(LFLAGS) @bytes.o $(DOBJS) @stubs.obj @demo.o $(DEMORES) $(LIBS) $(OUT)@~@demored.exe $(TAIL)
@else
	$(LINK) $(LFLAGS) @bytes.o $(DOBJS) @stubs.obj @demo.o $(LIBS) $(OUT)@~@demored.exe $(TAIL)
@endif
@endif
@endif
@if(resourcefile)
@if(watcom)
	wrc -i@../cslsrc -i@$(C) -bt=nt @../cslsrc/demored.rc @demored.exe
@endif
@endif
	$(STRIP) @demored.exe
	-$(RM) @demored.img
	$(WX) csl $(STORE) -i @slowr36.img -v -z -i @fasl36.img \
		-o @demored.img @../cslsrc/makedemo.lsp -- makedemo.log


###########################################################################


@csl.img:	@csl.exe @$(C)/compat.lsp @$(C)/compiler.lsp \
			@$(C)/ccomp.lsp @$(C)/extras.lsp
	-$(RM) @csl.img
	$(WX) csl $(STORE) -v -z @$(C)/build0.lsp \
		-D@@cslbase="$(C)" -- @cslimg.log


@csl.exe:	@bytes.o $(OBJS) \
@if(microsoft)
		$(CSLRES) \
@endif
		@stubs.o
@if(borland)
	$(LINK) -ecsl.exe @@@../cslsrc/borcsl.lnk
@else
@if(watcom)
	$(LINK) $(LFLAGS) @bytes.o,$(COBJS),@stubs.o $(LIBS) $(OUT)@~@csl.exe $(TAIL)
@else
@if(ressym)
	$(LINK) $(LFLAGS) @bytes.o $(OBJS) @stubs.o $(CSLRES) $(LIBS) $(OUT)@~@csl.exe $(TAIL)
@else
	$(LINK) $(LFLAGS) @bytes.o $(OBJS) @stubs.o $(LIBS) $(OUT)@~@csl.exe $(TAIL)
@endif
@endif
@endif
@if(resourcefile)
@if(watcom)
	wrc -i@$(C) -i@$(C) -bt=nt @$(C)/csl.rc @csl.exe
@endif
@endif
	$(STRIP) @csl.exe

@slowcsl.exe:	@bytes1.o $(OBJS) \
@if(microsoft)
		$(CSLRES) \
@endif
		@stubs.o
@if(borland)
	$(LINK) -eslowcsl.exe @@@../cslsrc/borcsl.lnk
@else
@if(watcom)
	$(LINK) $(LFLAGS) @bytes1.o,$(COBJS),@stubs.o $(LIBS) $(OUT)@~@slowcsl.exe $(TAIL)
@else
@if(ressym)
	$(LINK) $(LFLAGS) @bytes1.o $(OBJS) @stubs.o $(CSLRES) $(LIBS) $(OUT)@~@slowcsl.exe $(TAIL)
@else
	$(LINK) $(LFLAGS) @bytes1.o $(OBJS) @stubs.o $(LIBS) $(OUT)@~@slowcsl.exe $(TAIL)
@endif
@endif
@endif
@if(resourcefile)
@if(watcom)
	wrc -i@$(C) -i@$(C) -bt=nt @$(C)/csl.rc @slowcsl.exe
@endif
@endif
	$(STRIP) @slowcsl.exe

@if(win32)
@r36front.exe:	@r36front.o \
@if(microsoft)
		$(FRONTRES) \
@endif
		@c_applic1.o @c_text.o @c_graph.o @c_render.o @c_viewpt.o
@if(borland)
	$(LINK) -er36front.exe @@@../cslsrc/borfront.lnk
@else
@if(watcom)
	$(LINK) $(LFLAGS) @r36front.o,@c_applic1.o,@c_text.o,@c_graph.o,@c_render.o,@c_viewpt.o $(LIBS) $(OUT)@~@r36front.exe $(TAIL)
@else
@if(ressym)
	$(LINK) $(LFLAGS) @r36front.o,@c_applic1.o,@c_text.o,@c_graph.o,@c_render.o,@c_viewpt.o $(FRONTRES) $(LIBS) $(OUT)@~@r36front.exe $(TAIL)
@else
	$(LINK) $(LFLAGS) @r36front.o,@c_applic1.o,@c_text.o,@c_graph.o,@c_render.o,@c_viewpt.o $(LIBS) $(OUT)@~@r36front.exe $(TAIL)
@endif
@endif
@endif
@if(resourcefile)
@if(watcom)
	wrc -i@$(C) -i@$(C) -bt=nt @$(C)/r36front.rc @r36front.exe
@endif
@endif
	$(STRIP) @r36front.exe
@endif

#
# "make lispfile"
#           recreates compiler.lsp, extras.lsp and ccomp.lsp from
#           the corresponding master sources which are held in RLISP
#           form.  Temporarily builds an RLISP parser on the way.

lispfile:	@csl.exe @csl.img @$(C)/lispfile.lsp $(SYMBOLIC)
	$(WX) csl $(STORE) -v -z @$(C)/lispfile.lsp \
		-D@@cslbase="$(C)" -- @lispfile.log

signature:	@$(C)/version.hhh register.key $(SYMBOLIC)
	filesign -u @$(C)/version.hhh @$(C)/version.h Developer or tester

#
# Now rules for re-compiling the main collection of CSL source files. I
# write each case out individually since that makes the makefile less
# delicate than one that relies on setting up general rules - and I want this
# file to work on several different systems.
#
@if(watcom)

# There is a special nasty with the Watcom assembler (at least version
# 10.5) in that tab characters on the command line upset it, so I MUST
# have the command given here all on one line in that case.
@endif

$(ASMOBJDEP):	@$(C)/$(ASMSRC)
@if(gcc)
	$(ASM) $(ASMFLAGS) -o @$(ASMOBJ).o @$(C)/$(ASMSRC)
@else
	$(ASM) $(ASMFLAGS) @$(C)/$(ASMSRC)
@endif

@arith01.o:	@$(C)/arith01.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith01.o \
@endif
		@$(C)/arith01.c

@arith02.o:	@$(C)/arith02.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith02.o \
@endif
		@$(C)/arith02.c

@arith03.o:	@$(C)/arith03.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith03.o \
@endif
		@$(C)/arith03.c

@arith04.o:	@$(C)/arith04.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith04.o \
@endif
		@$(C)/arith04.c

@arith05.o:	@$(C)/arith05.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h @$(C)/stream.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith05.o \
@endif
		@$(C)/arith05.c

@arith06.o:	@$(C)/arith06.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith06.o \
@endif
		@$(C)/arith06.c

@arith07.o:	@$(C)/arith07.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith07.o \
@endif
		@$(C)/arith07.c

@arith08.o:	@$(C)/arith08.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith08.o \
@endif
		@$(C)/arith08.c

@arith09.o:	@$(C)/arith09.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith09.o \
@endif
		@$(C)/arith09.c

@arith10.o:	@$(C)/arith10.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith10.o \
@endif
		@$(C)/arith10.c

@arith11.o:	@$(C)/arith11.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith11.o \
@endif
		@$(C)/arith11.c

@arith12.o:	@$(C)/arith12.c @$(C)/arith.h @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @arith12.o \
@endif
		@$(C)/arith12.c

@bytes.o:	@$(C)/bytes1.c @$(C)/bytes.c @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h \
		@$(C)/bytes.h @$(C)/arith.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @bytes.o \
@endif
		@$(C)/bytes.c

@bytes1.o:	@$(C)/bytes1.c @$(C)/bytes.c @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h \
		@$(C)/bytes.h @$(C)/arith.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @bytes1.o \
@endif
		@$(C)/bytes1.c

#
# The target "@bytes1a.o" recompiles bytes1.c, but with the flag set that
# arranges that the number of GET operations performed and the associated
# indicators will be recorded, so that (bytecounts) will display statistics
# about it. This slows things down considerably, but can help when you are in
# the process of deciding which indicators are specified as "fast" ones.
#

@bytes1a.o:	@$(C)/bytes1.c @$(C)/bytes.c @$(C)/tags.h @$(C)/machine.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h \
		@$(C)/bytes.h @$(C)/arith.h
	$(CC) $(CFLAGS) -DRECORD_GET=1 \
@if(gcc)
		-o @bytes1.o \
@endif
		@$(C)/bytes1.c

@char.o:	@$(C)/char.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @char.o \
@endif
		@$(C)/char.c

@csl.o:	@$(C)/csl.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h @$(C)/version.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h @$(C)/stream.h @$(C)/sockhdr.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @csl.o \
@endif
		@$(C)/csl.c

@if(win32)
@r36front.o:	@$(C)/r36front.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h @$(C)/version.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h @$(C)/stream.h @$(C)/sockhdr.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @r36front.o \
@endif
		@$(C)/r36front.c

@endif

@if(cwin)
# the cwin window manager package is for use with Watcom C only (at present)

@c_applic.o:	@$(C)/c_applic.cpp @$(C)/cwin.h @$(C)/cwin.hpp @$(C)/cwinres.h
	$(CPP) $(CPPFLAGS) \
@if(gcc)
		-o @c_applic.o \
@endif
		@$(C)/c_applic.cpp

@c_applic1.o:	@$(C)/c_applic.cpp @$(C)/cwin.h @$(C)/cwin.hpp @$(C)/cwinres.h
	$(CPP) $(CPPFLAGS) -DDEMOVERSION=1 \
@if(gcc)
		-o @c_applic1.o \
@else
                $(OUTOBJ)@~@c_applic1.o
@endif
		@$(C)/c_applic.cpp

@c_text.o:	@$(C)/c_text.cpp @$(C)/cwin.h @$(C)/cwin.hpp @$(C)/cwinres.h
	$(CPP) $(CPPFLAGS) \
@if(gcc)
		-o @c_text.o \
@endif
		@$(C)/c_text.cpp

@c_graph.o:	@$(C)/c_graph.cpp @$(C)/cwin.h @$(C)/cwin.hpp @$(C)/cwinres.h
	$(CPP) $(CPPFLAGS) \
@if(gcc)
		-o @c_graph.o \
@endif
		@$(C)/c_graph.cpp

@c_render.o:	@$(C)/c_render.cpp @$(C)/cwin.h @$(C)/cwin.hpp @$(C)/cwinres.h
	$(CPP) $(CPPFLAGS) \
@if(gcc)
		-o @c_render.o \
@endif
		@$(C)/c_render.cpp

@c_viewpt.o:	@$(C)/c_viewpt.cpp @$(C)/cwin.h @$(C)/cwin.hpp @$(C)/cwinres.h
	$(CPP) $(CPPFLAGS) \
@if(gcc)
		-o @c_viewpt.o \
@endif
		@$(C)/c_viewpt.cpp


@endif

@eval1.o:	@$(C)/eval1.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/arith.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @eval1.o \
@endif
		@$(C)/eval1.c

@eval2.o:	@$(C)/eval2.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/arith.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @eval2.o \
@endif
		@$(C)/eval2.c

@eval3.o:	@$(C)/eval3.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @eval3.o \
@endif
		@$(C)/eval3.c

@eval4.o:	@$(C)/eval4.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/arith.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @eval4.o \
@endif
		@$(C)/eval4.c

@fasl.o:	@$(C)/fasl.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/arith.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @fasl.o \
@endif
		@$(C)/fasl.c

@fns1.o:	@$(C)/fns1.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @fns1.o \
@endif
		@$(C)/fns1.c

@fns2.o:	@$(C)/fns2.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/read.h @$(C)/entries.h \
		@$(C)/sockhdr.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @fns2.o \
@endif
		@$(C)/fns2.c

@fns3.o:	@$(C)/fns3.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/read.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @fns3.o \
@endif
		@$(C)/fns3.c

@gc.o:	@$(C)/gc.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @gc.o \
@endif
		@$(C)/gc.c

#
# For each major target I have one file that is system specific - eg
# sysdos.c, sysunix.c, ...
#

@$(SYS).o:	@$(C)/$(SYS).c @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/fileops.c @$(C)/scandir.c @$(C)/version.h \
		@$(C)/filename.c
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @$(SYS).o \
@endif
		@$(C)/$(SYS).c

@preserve.o:	@$(C)/preserve.c @$(C)/tags.h @$(C)/machine.h @$(C)/stream.h \
		@$(C)/externs.h @$(C)/sys.h @$(C)/cslerror.h @$(C)/read.h @$(C)/version.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @preserve.o \
@endif
		@$(C)/preserve.c

@print.o:	@$(C)/print.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/read.h \
		@$(C)/arith.h @$(C)/entries.h @$(C)/stream.h @$(C)/sockhdr.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @print.o \
@endif
		@$(C)/print.c

@read.o:	@$(C)/read.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/read.h \
		@$(C)/arith.h @$(C)/entries.h @$(C)/stream.h @$(C)/sockhdr.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @read.o \
@endif
		@$(C)/read.c

@restart.o:	@$(C)/restart.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/sys.h @$(C)/cslerror.h @$(C)/read.h @$(C)/version.h \
		@$(C)/arith.h @$(C)/entries.h @$(C)/stream.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @restart.o \
@endif
		@$(C)/restart.c

@stubs.o:	@$(C)/stubs.c @$(C)/machine.h @$(C)/externs.h @$(C)/sys.h \
		@$(C)/tags.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @stubs.o \
@endif
		@$(C)/stubs.c

@cslmpi.o:	@$(C)/cslmpi.c @$(C)/machine.h @$(C)/externs.h @$(C)/sys.h \
		@$(C)/mpipack.c @$(C)/tags.h @$(C)/cslerror.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @cslmpi.o \
@endif
		@$(C)/cslmpi.c


###########################################################################

@u01.o:	u01.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u01.o \
@endif
		u01.c

@u02.o:	u02.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u02.o \
@endif
		u02.c

@u03.o:	u03.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u03.o \
@endif
		u03.c

@u04.o:	u04.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u04.o \
@endif
		u04.c

@u05.o:	u05.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u05.o \
@endif
		u05.c

@u06.o:	u06.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u06.o \
@endif
		u06.c

@u07.o:	u07.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u07.o \
@endif
		u07.c

@u08.o:	u08.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u08.o \
@endif
		u08.c

@u09.o:	u09.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u09.o \
@endif
		u09.c

@u10.o:	u10.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u10.o \
@endif
		u10.c

@u11.o:	u11.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u11.o \
@endif
		u11.c

@u12.o:	u12.c @$(C)/tags.h @$(C)/machine.h @$(C)/externs.h \
		@$(C)/cslerror.h @$(C)/entries.h
	$(CC) $(CFLAGS) \
@if(gcc)
		-o @u12.o \
@endif
		u12.c

#
# "make ccode" re-manufactures u01.c to u12.c and u01.lsp to u12.lsp
# I do not put in dependencies that cause this to happen automatically
# since experience shows that if I did it would happen (at significant
# expense) much too often.  However when things alter in the Reduce
# source directory or when major changes are made to CSL this should be
# activated.
#

#
# N.B. the step here used $(XSTORE) rather than $(STORE) because this
# build step may take more memory than any other.
#

ccode:	@slowcsl.exe @slowr36.img $(SYMBOLIC)
	$(WX) slowcsl $(XSTORE) -i @slowr36.img -v @../cslsrc/select36.red -- @select36.log

#
# Code to recreate the log files from the production version of the system.
#
# Note that for Windows benefit I use my own private output redirection with
# "--" rather than ">", since ">" seems incompatible with fully window
# applications, even when launched from the command line. Then to make this
# file consistent across platforms I use the same scheme all the time.
#

@log/algint.log:	@r36.exe @r36.img @../xmpl/algint.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=algint -Dloadup=algint -- @log/algint.log

@log/applysym.log:	@r36.exe @r36.img @../xmpl/applysym.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=applysym -Dloadup=applysym -- @log/applysym.log

@log/arnum.log:	@r36.exe @r36.img @../xmpl/arnum.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=arnum -Dloadup=arnum -- @log/arnum.log

@log/assist.log:	@r36.exe @r36.img @../xmpl/assist.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=assist -Dloadup=assist -- @log/assist.log

@log/avector.log:	@r36.exe @r36.img @../xmpl/avector.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=avector -Dloadup=avector -- @log/avector.log

@log/boolean.log:	@r36.exe @r36.img @../xmpl/boolean.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=boolean -Dloadup=boolean -- @log/boolean.log

@log/cali.log:	@r36.exe @r36.img @../xmpl/cali.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=cali -Dloadup=cali -- @log/cali.log

@log/camal.log:	@r36.exe @r36.img @../xmpl/camal.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=camal -Dloadup=camal -- @log/camal.log

@log/changevr.log:	@r36.exe @r36.img @../xmpl/changevr.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=changevr -Dloadup=changevr -- @log/changevr.log

@log/compact.log:	@r36.exe @r36.img @../xmpl/compact.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=compact -Dloadup=compact -- @log/compact.log

@log/complex.log:	@r36.exe @r36.img @../xmpl/complex.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=complex -- @log/complex.log

@log/crack.log:	@r36.exe @r36.img @../xmpl/crack.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=crack -Dloadup=crack -- @log/crack.log

@log/cvit.log:	@r36.exe @r36.img @../xmpl/cvit.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=cvit -Dloadup=cvit -- @log/cvit.log

@log/decompos.log:	@r36.exe @r36.img @../xmpl/decompos.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=decompos -- @log/decompos.log

@log/defint.log:	@r36.exe @r36.img @../xmpl/defint.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=defint -Dloadup=defint -- @log/defint.log

@log/desir.log:	@r36.exe @r36.img @../xmpl/desir.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=desir -Dloadup=desir -- @log/desir.log

@log/dfpart.log:	@r36.exe @r36.img @../xmpl/dfpart.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=dfpart -Dloadup=dfpart -- @log/dfpart.log

@log/dummy.log:	@r36.exe @r36.img @../xmpl/dummy.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=dummy -Dloadup=dummy -- @log/dummy.log

@log/elem.log:	@r36.exe @r36.img @../xmpl/elem.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=elem -- @log/elem.log

@log/excalc.log:	@r36.exe @r36.img @../xmpl/excalc.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=excalc -Dloadup=excalc -- @log/excalc.log

@log/factor.log:	@r36.exe @r36.img @../xmpl/factor.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=factor -- @log/factor.log

@log/fide.log:	@r36.exe @r36.img @../xmpl/fide.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=fide -Dloadup=fide -- @log/fide.log

@log/fps.log:	@r36.exe @r36.img @../xmpl/fps.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=fps -Dloadup=fps -- @log/fps.log

@log/gcd.log:	@r36.exe @r36.img @../xmpl/gcd.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=gcd -- @log/gcd.log

@log/gentran.log:	@r36.exe @r36.img @../xmpl/gentran.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=gentran -Dloadup=gentran -- @log/gentran.log

@log/groebner.log:	@r36.exe @r36.img @../xmpl/groebner.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=groebner -Dloadup=groebner -- @log/groebner.log

@log/ideals.log:	@r36.exe @r36.img @../xmpl/ideals.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=ideals -Dloadup=ideals -- @log/ideals.log

@log/ineq.log:	@r36.exe @r36.img @../xmpl/ineq.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=ineq -Dloadup=ineq -- @log/ineq.log

@log/int.log:	@r36.exe @r36.img @../xmpl/int.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=int -- @log/int.log

@log/invbase.log:	@r36.exe @r36.img @../xmpl/invbase.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=invbase -Dloadup=invbase -- @log/invbase.log

@log/laplace.log:	@r36.exe @r36.img @../xmpl/laplace.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=laplace -Dloadup=laplace -- @log/laplace.log

@log/lie.log:	@r36.exe @r36.img @../xmpl/lie.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=lie -Dloadup=lie -- @log/lie.log

@log/limits.log:	@r36.exe @r36.img @../xmpl/limits.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=limits -- @log/limits.log

@log/linalg.log:	@r36.exe @r36.img @../xmpl/linalg.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=linalg -Dloadup=linalg -- @log/linalg.log

@log/math.log:	@r36.exe @r36.img @../xmpl/math.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=math -- @log/math.log

@log/matrix.log:	@r36.exe @r36.img @../xmpl/matrix.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=matrix -- @log/matrix.log

@log/modsr.log:	@r36.exe @r36.img @../xmpl/modsr.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=modsr -Dloadup=modsr -- @log/modsr.log

@log/ncpoly.log:	@r36.exe @r36.img @../xmpl/ncpoly.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=ncpoly -Dloadup=ncpoly -- @log/ncpoly.log

@log/normform.log:	@r36.exe @r36.img @../xmpl/normform.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=normform -Dloadup=normform -- @log/normform.log

@log/numeric.log:	@r36.exe @r36.img @../xmpl/numeric.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=numeric -Dloadup=numeric -- @log/numeric.log

@log/odesolve.log:	@r36.exe @r36.img @../xmpl/odesolve.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=odesolve -Dloadup=odesolve -- @log/odesolve.log

@log/orthovec.log:	@r36.exe @r36.img @../xmpl/orthovec.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=orthovec -Dloadup=orthovec -- @log/orthovec.log

@log/pf.log:	@r36.exe @r36.img @../xmpl/pf.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=pf -- @log/pf.log

@log/physop.log:	@r36.exe @r36.img @../xmpl/physop.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=physop -Dloadup=physop -- @log/physop.log

@log/pmrules.log:	@r36.exe @r36.img @../xmpl/pmrules.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=pmrules -Dloadup=pmrules -- @log/pmrules.log

@log/randpoly.log:	@r36.exe @r36.img @../xmpl/randpoly.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=randpoly -Dloadup=randpoly -- @log/randpoly.log

@log/reacteqn.log:	@r36.exe @r36.img @../xmpl/reacteqn.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=reacteqn -Dloadup=reacteqn -- @log/reacteqn.log

@log/reduce.log:	@r36.exe @r36.img @../xmpl/reduce.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=reduce -- @log/reduce.log

@log/residue.log:	@r36.exe @r36.img @../xmpl/residue.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=residue -Dloadup=residue -- @log/residue.log

@log/rlfi.log:	@r36.exe @r36.img @../xmpl/rlfi.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=rlfi -Dloadup=rlfi -- @log/rlfi.log

@log/rlisp88.log:	@r36.exe @r36.img @../xmpl/rlisp88.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=rlisp88 -- @log/rlisp88.log

@log/roots.log:	@r36.exe @r36.img @../xmpl/roots.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=roots -- @log/roots.log

@log/rounded.log:	@r36.exe @r36.img @../xmpl/rounded.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=rounded -- @log/rounded.log

@log/rsolve.log:	@r36.exe @r36.img @../xmpl/rsolve.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=rsolve -Dloadup=rsolve -- @log/rsolve.log

@log/scope.log:	@r36.exe @r36.img @../xmpl/scope.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=scope -Dloadup=scope -- @log/scope.log

@log/sets.log:	@r36.exe @r36.img @../xmpl/sets.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=sets -Dloadup=sets -- @log/sets.log

@log/solve.log:	@r36.exe @r36.img @../xmpl/solve.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=solve -- @log/solve.log

@log/spde.log:	@r36.exe @r36.img @../xmpl/spde.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=spde -Dloadup=spde -- @log/spde.log

@log/specfn.log:	@r36.exe @r36.img @../xmpl/specfn.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=specfn -Dloadup=specfn -- @log/specfn.log

@log/sum.log:	@r36.exe @r36.img @../xmpl/sum.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=sum -- @log/sum.log

@log/symmetry.log:	@r36.exe @r36.img @../xmpl/symmetry.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=symmetry -Dloadup=symmetry -- @log/symmetry.log

@log/taylor.log:	@r36.exe @r36.img @../xmpl/taylor.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=taylor -Dloadup=taylor -- @log/taylor.log

@log/tps.log:	@r36.exe @r36.img @../xmpl/tps.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=tps -Dloadup=tps -- @log/tps.log

@log/tri.log:	@r36.exe @r36.img @../xmpl/tri.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=tri -Dloadup=tri -- @log/tri.log

@log/trigsimp.log:	@r36.exe @r36.img @../xmpl/trigsimp.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=trigsimp -Dloadup=trigsimp -- @log/trigsimp.log

@log/wu.log:	@r36.exe @r36.img @../xmpl/wu.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=wu -Dloadup=wu -- @log/wu.log

@log/xcolor.log:	@r36.exe @r36.img @../xmpl/xcolor.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=xcolor -Dloadup=xcolor -- @log/xcolor.log

@log/xideal.log:	@r36.exe @r36.img @../xmpl/xideal.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=xideal -Dloadup=xideal -- @log/xideal.log

@log/zeilberg.log:	@r36.exe @r36.img @../xmpl/zeilberg.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=zeilberg -Dloadup=zeilberg -- @log/zeilberg.log

@log/ztrans.log:	@r36.exe @r36.img @../xmpl/ztrans.tst
	$(WX) r36 $(STORE) -b @../cslsrc/ndotest.red -Dname=ztrans -Dloadup=ztrans -- @log/ztrans.log

# end of makefile

