Installation notes:

Most of the development of ACS was done on a NeXT with Gnu C++,
2.2.2.  I have also compiled it successfully on several other
systems, listed at the end of this file.  Other users have ported
ACS to several other systems.  Some of the files are included in
the distribution.  They may not have been tested in the latest
release.  It should compile with any "standard" C++ compiler.  It
should produce no warnings when compiled with the switches in the
supplied makefiles and g++.

All source files are in the src directory.  I use subdirectories
for the .o files each supported machine.  This makes it possible
to install it on several different machines all sharing the same
file system.

To avoid maintaining multiple versions of Makefiles, I have broken
them up to parts that must be concatenated: Make1.*, Make2.*,
Make3.*.  In general, to make a Makefile for your system, cat one
of each.  See the Makefile for details.  I have automated this for
some systems.  Just "make your-machine", if it is one that is
supported.  This will make the appropriate Makefile, cd to where
the .o's go and run make from there.  For porting information for
specific machines, read its "Make2.*" file.

To help the porting to MSDOS and VMS, you should first "make
makefiles" on a unix system, which will make the subdirectories
and the Makefiles.  Then transfer the files.  Someday I may come
up with a better way.  A pre-compiled executable is available at
the primary ftp site (cs.rit.edu).

We assume that make will follow "VPATH" to find the sources.  This
system makes it possible to manage several platforms on a single
file system which may be NFS mounted to all the supported machines.
If your make does not support VPATH, there are three options.  The
preferred method on unix based systems is to cd to where the
.o's go and type "ln -s ../*.cc ../*.h .".  This will set up links
so the Makefiles will work as intended.  In some cases we have set
up the Makefile to do this automatically.  The second method, which
may be needed on systems like MSDOS that don't have symbolic links
is to copy the .c and .h files to satisfy make.  The third option,
where you have only one computer, is to move the machine
specific Makefile to the src directory and run make from there.

If you have g++ on a unix type system that is not directly supported,
try to compile it by just typing "make".  In most cases this will
do it, but you may get a few warnings.  If it doesn't work, look
in the file md_unix.h for hints.

If you have a cfront-type compiler, called "CC", and your system
is not directly supported, try it first by typing "make alt".
(alternate???)  Again, you may get a few warnings but it should
work.  Look in the file md_unix.h for hints, if it doesn't work,
or if the warnings look serious.

The most likely causes of a port to fail are missing header files
and missing function prototypes.  Sometimes missing functions can
be a problem.  The solution to these problems is to supply what is
missing.  The "md_*" files exist for this purpose.  You should make
a copy of the appropriate Make2.___ file, patch it to define
something to identify the system, then patch the md_(whatever).h
and md_(whatever).cc as appropriate.  You should not use any #ifdef's
except in these file.

If a port doesn't work, probably there is a missing header file,
prototype, or function.  You need to supply what is missing.
Suppose you have a "foobiac" computer.  You should make a new file
"Make2.foobiac" that defines the compiler switches.  In CFLAGS,
you should define "FOOBIAC" to select your patches.  You should
change "Makefile" to make the directory "FOOBIAC" for the .o files
and the special "Makefile".  You should also add a few lines so
when you type "make foobiac" in the "src" directory it builds the
special "Makefile" then does (cd FOOBIAC; make -k) to make the
program.  Then you should edit the md_unix.h file to make the
appropriate includes and prototypes for your system.  Look at the
files to see how we handle the other systems.  If you do a port
please share your patches so I can add it to the distribution.

If you have a non-unix system you may also need to change "version.cc"
and "version.h" and make some new files "_foobiac.cc" and "_foobiac.h".
Look at the files for other systems for a guide to what should be
there.  How you handle the "makefile" will depend on the tools
you have.

Some files starting with "plot" contain plotting drivers are may
also need customization if you want a graphic display.  If all
you want are ASCII plots the files should be suitable as they are.

On a PC, you should have some version of "make".  For Borland C,
concatenate the files "Make1", "Make2.bc", and Make.depend to
"makefile".  Then change all ".o" extensions to ".obj".  The program
"sed" on unix systems will do this.  Type "make" from the directory
containing the sources.  Since I use SoftPC on a unix system for
this, I make links (in unix) from the MSDOS directory to the src
directory (..) to work around the fact that my PC make does not
support VPATH.  You may need to get a few unix style utility programs
if you don't have them already.  Probably the best approach for a
PC is to use the pre-compiled executable we supply.

You should place the file "acs.hlp" in any directory in PATH.
ACS uses the environment variable PATH to find it.  Usually the
best place is the same directory as the executable.

There should be NO non-portable code anywhere but the underscore
files and plot files.  The use of #ifdef to patch portability
problems should be restricted to the underscore and plot files.

The latest version of the program with executables, source,
documentation, and test cases is available by modem from (716)272-1645.
Login as "guest".  ACS is also available by anonymous ftp from
ee.rochester.edu or cs.rit.edu.

If you have questions send email to al@atd.rochester.ny.us,
davis@ee.rochester.edu or atd@cs.rit.edu.  You should register (by
email) if you want to know about updates and the future of ACS.
---------
ACS (this release, 0.17) is known to work on ...
  NeXT (Motorola), NextStep 3.2, c++ (gcc) 2.2.2
  Sun Sparc-2, Sun-OS 4.1.3, g++ 2.6.3 or CC
  SGI Indy, Irix 5.2, g++ 2.6.3 or CC
  286 PC, MSDOS 5.00, Borland C++ 3.1
  Linux, (pentium) g++ 2.5.8
  Dec-station, ultrix, g++ 2.3.3
  Dec Alpha, OSF 3.0, gcc 2.6.3
Users have ported older versions of ACS to other systems but they
are not supplied here because this release has changed significantly
from previous releases.
