9
and programs, automatically generating source code dependency lists, and installing production versions of libraries
and programs. These tasks are initiated by invoking the make command at the top-level installation directory. All sub-
sequent lower-level makefile.mak scripts are invoked automatically in a prescribed order, and the 19,000 lines of source
code are automatically maintained and object files kept up to date. The make command can be invoked from the loca-
tion of any lower-level makefile.mak file and thereby isolate specific portions of the source code for recompilation.
However, the details of doing this are slightly involved and left to the installer to pursue on his own.
The standard reference recognition system in src/bin/hsfsys, and its supporting libraries under src/lib, are all
coded in C. Two other utilities located in src/bin/mis2evt and src/bin/mis2pat have FORTRAN components that require
a FORTRAN 77 compiler. The software distribution has been organized so that you can compile the recognition system
even though your computer may not have an installed FORTRAN compiler. To remove mis2evt and mis2pat from the
hierarchical compilation, edit the file src/bin/makefile.mak, removing mis2evt and mis2pat from the assignment to the
variable “SUBS”.
Assuming the installation directory is /usr/local/hsfsys, the following steps are required to compile the distri-
bution for the first time on your computer:
# cd /usr/local/hsfsys
# make -f makefile.mak instarch INSTARCH=<arch>
# make -f makefile.mak bare
# make -f makefile.mak depend
# make -f makefile.mak install
The first make invocation uses the instarch option to install architecture-dependent files required to support
the compilation and execution of the distribution’s programs and libraries. The actual architecture is defined by replac-
ing the argument <arch> with one of the extensions listed in Figure 4. For example, “INSTARCH=sun” must be used
to compile the distribution on computers running SunOS 4.1.?. If you are installing this software on a machine not
listed in Figure 4, you first need to determine which set of architecture-dependent files is most similar to those required
by your particular computer. Invoke make using the instarch option with INSTARCH set to the closest known archi-
tecture. Then, edit the resulting makefile.mak files in the subdirectories under src/bin and src/lib according to the
requirements of your machine. One other hint, if you are compiling on a Solaris (SunOS 5.?) machine using the parallel
make utility, you may have to add a “-R” option prior to the “-f” option for each of the make invocations.
The bare option causes the compilation scripts to remove all temporary, backup, core, and object files from
the program directories in src/bin and the library directories in src/lib. The depend option causes the compilation
scripts to automatically generate source code dependency lists and modify the makefile.mak files within the program
and library directories. Your C compiler may not have this capability, in which case you may want to generate the
dependency lists by hand. The install option builds source code dependency lists as needed, compiles all program and
library source code files, and installs compiled libraries and programs into their corresponding production directories.
Compiled libraries are installed in the installation top-level directory lib. Compiled programs are installed in the instal-
lation top-level directory bin.
One other capability, the automatic generation of catalog files, has been incorporated into the hierarchical
compilation scripts. A formatted comment header is included at the top of every program and library source code file
in the recognition system distribution. When the install option is used, the low-level makefile.mak files invoke the C-
shell script bin/catalog.csh. The script catalog.csh extracts all source code headers associated with all the programs or
a specific library in the distribution and compiles a catalog.txt file. A catalog.txt file exists in the subdirectory src/bin,
and one catalog.txt file exists in each of the library directories in src/lib. This provides a convenient and quick reference
to the source code provided in the distribution.