File: fontu.info,  Node: Installation,  Next: Overview,  Prev: Introduction,  Up: Top

Installation
************

  *Note Prereqs::, for what you need to have installed before you can
compile these programs.

  After that, here's what to do:

   * Run `sh configure' in the top-level directory.  This tries to
     figure out system dependencies and the installation prefix.  *Note
     configure::, for options and other information about the
     `configure' script.

   * If necessary, edit the paths or other definitions in the top-level
     `GNUmakefile' and in `include/c-auto.h'.

   * Run GNU make.  For example, if it's installed as `make', just type
     `make' in the top-level directory.  If all goes well, this will
     compile all the programs.

   * Install the programs and supporting data files with `make install'.


  If you encounter problems anywhere along the line, let us know.  Known
problems are listed below (*note Problems::).  *Note Bugs::, for
details on how to submit a useful bug report.

* Menu:

* configure::                   Options and frills for the `configure' script.
* Prereqs::                     What's needed before installation.
* Problems::                    Known trouble.

File: fontu.info,  Node: configure,  Next: Prereqs,  Up: Installation

The `configure' script
======================

  (This section is largely from the Autoconf manual, by David MacKenzie.
*Note Running `configure' scripts: (autoconf)Running configure Scripts.)

  The `configure' script that comes with the font utilities is
generated automatically by the Autoconf program.  You can regenerate
`configure' by rerunning Autoconf (for example, if a new version of
Autoconf is released); you must arrange for Autoconf to use the macros
in `./aclocal.m4' (*note Generating `configure': (autoconf)Generating
configure.).

  The purpose of `configure' is to adapt the source code to your
system: for example, the name of the directory header file (`dirent.h'
or `sys/dir.h'), whether an `install' program is available, and so on.

  Normally, you do not need to give any options to `configure'; you
`cd' to the directory with the source code and type `configure'.
Exceptions: if `.' is not in your `PATH', you must type `./configure';
if you are using a non-Bourne-compatible shell on some old systems, you
must samp `sh configure'.

  Running `configure' takes a minute or two.  While it is running, it
prints some messages that tell what it is doing.  If you don't want to
see the messages, run `configure' with its standard output redirected
to `/dev/null'; for example, `configure >/dev/null'.

  To compile the package in a different directory from the one
containing the source code, you must use a variant of Make that
supports the `VPATH' variable, such as GNU Make.  `cd' to the directory
where you want the object files and executables to go and run
`configure' with the option `--srcdir=DIR', where DIR is the directory
that contains the source code.  Using this option is unnecessary if the
source code is in the parent directory of the one in which you are
compiling; `configure' automatically checks for the source code in `..'
if it does not find it in `.'.

  `configure' guesses the default installation prefix (we'll call it
`$(prefix)') by looking for the directory which contains the command
`gcc', and using its parent.  For example, if `gcc' is installed as
`/usr/local/gnu/bin/gcc', `$(prefix)' will be set to `/usr/local/gnu'.

  You can override this default guess for the installation prefix by
giving `configure' the option `--prefix=PATH'.  You can also specify
separate installation prefixes for architecture-specific files and
architecture-independent files by giving `configure' the option
`--exec_prefix=XPATH'. Then XPATH will be the prefix for installing
programs and libraries.  Data files and documentation will still use
the regular prefix.  Normally, all files are installed using the
regular prefix.

  You can tell `configure' to figure out the configuration for your
system, and record it in `config.status', without actually configuring
the package.  To do this, give `configure' the `--no-create' option.
Later, you can run `./config.status' to actually configure the package.
This option is useful mainly in `Makefile' rules for updating
`config.status' and the `Makefile' itself.  You can also give
`config.status' the `--recheck' option, which makes it rerun
`configure' with the same arguments you used before.  This is useful if
you change `configure'.

  `configure' ignores any other arguments that you give it.

  On systems that require unusual options for compilation or linking
that the package's `configure' script does not know about, you can give
`configure' initial values for variables by setting them in the
environment.  In Bourne-compatible shells, you can do that on the
command line like this:

     CC='gcc -traditional' LIBS=-lposix sh configure

  The Make variables that you might want to override with environment
variables when running `configure' are:

  (For these variables, any value given in the environment overrides the
value that `configure' would choose.)

`CC'
     The C compiler program.  The default is `gcc' if that is in your
     `PATH', `cc' otherwise.

`INSTALL'
     The program to use to install files.  The default is `install' if
     you have it, `cp' otherwise.

  (For these variables, any value given in the environment is added to
the value that `configure' chooses.)

`DEFS'
     Configuration options, in the form `-Dfoo -Dbar...'.  Packages
     that use the Autoconf macro `AC_CONFIG_HEADER' (including the file
     utilities) do not use this variable.

`LIBS'
     Libraries to link with, in the form `-lfoo -lbar...'.

  Of course, problems requiring manual intervention (e.g., setting these
variables) should ideally be fixed by updating either the Autoconf
macros or the `configure.in' file for that package.

File: fontu.info,  Node: Prereqs,  Next: Problems,  Prev: configure,  Up: Installation

Prerequisites
=============

  To compile and use these programs, the following are necessary:

   * The GNU C compiler, version 1.40 or newer.

   * GNU Make; probably any version newer than 3.50 or so will do.

   * X11R4 or R5 unshared libraries and headers.  These are only
     necessary to run XBfe (*note XBfe::) or for Limn (*note Limn::) to
     display its results online.  (You also need an X11 server,
     naturally.)  You might be able to compile using the X11 shared
     libraries, but we haven't tried that.

   * To make any substantial use of the fonts you create, you will
     probably need TeX, Metafont, and their friends, especially
     `PLtoTF' and `GFtoPK'.

   * Ghostscript, version 2.4 or newer.  You only need this if you want
     to use GSrenderfont or BZRedit.

   * The GNU Awk program, `gawk'.  This is only needed if you want to
     use GSrenderfont.


  See the section below for information on how to get all these
programs.

* Menu:

* Archives::                    Where to find programs.

File: fontu.info,  Node: Archives,  Up: Prereqs

Archives
--------

  The canonical source for all GNU software, including the GNU C
compiler, GNU make, and Ghostscript, is `prep.ai.mit.edu
[18.71.0.38]:pub/gnu'.  That directory is replicated at many other sites
around the world, including:

United States:
            wuarchive.wustl.edu   gatekeeper.dec.com:pub/GNU
            uxc.cso.uiuc.edu      ftp.uu.net:packages/gnu

Europe:
            archive.eu.net        src.doc.ic.ac.uk:gnu    ftp.funet.fi
            nic.funet.fi:pub/gnu  ugle.unit.no            isy.liu.se
            ftp.diku.dk

elsewhere:
            ftp.cs.titech.ac.jp   utsun.s.u-tokyo.ac.jp:ftpsync/prep
            archie.au:gnu

  You can also order tapes with GNU software from the Free Software
Foundation (thereby supporting the development of the font utilities and
the rest of the GNU project); send mail to `gnu@prep.ai.mit.edu' for
the latest prices and ordering information, or retrieve the file
`DISTRIB' from a GNU archive.

  The canonical source for the X window system is
`export.lcs.mit.edu:pub/R5'.  That directory is also shadowed at many
other sites, including `gatekeeper.dec.com'.  The FSF also sells X
distribution tapes.

  TeX is more scattered.  A complete Unix TeX distribution is available
for ftp on the machine `byron.u.washington.edu', or by ordering a tape
from the University of Washington (send email to
`elisabet@u.washington.edu'.  What is on `byron' for ftp is often
out-of-date, though.

  The canonical sources for just Web2C--the port of just TeX, Metafont,
and friends to Unix, without DVI processors, fonts, macro packages,
etc.--are:

     ftp.cs.umb.edu [192.12.26.23]:pub/tex/                  (Boston)
     ics.uci.edu [128.195.1.1]:TeX/                          (California)
     ftp.th-darmstadt.de [130.83.55.75]:pub/tex/src/web2c/   (Germany)

  At all these sites, the files to retrieve are `web.tar.Z' and
`web2c.tar.Z'.

  The DVI-to-PostScript driver we recommend is Tom Rokicki's Dvips, and
the X window system driver we recommend is Paul Vojta's XDvi.  These
programs are available from, respectively,
     labrea.stanford.edu:pub/dvips*
     export.lcs.mit.edu:contrib/xdvi.tar.Z

  We have modified XDvi and Dvips to use the same path searching code as
the current distribution of TeX and these font utilities; the modified
versions are available from `ftp.cs.umb.edu:pub/tex'.

  To use Metafont, you must have a file defining output devices.
(*Note Metafont and BZRto::.)  We recommend you obtain `modes.mf' from
     ftp.cs.umb.edu:pub/tex/modes.mf

  You can retrieve the document describing all the details of the naming
scheme for TeX fonts from

     ftp.cs.umb.edu [192.12.26.23]:pub/tex/fontname.tar.Z

File: fontu.info,  Node: Problems,  Prev: Prereqs,  Up: Installation

Problems
========

  This section lists some things which have caused trouble during
installation.  If you encounter other problems, please send a bug
report.  *Note Bugs::, for how to submit a useful bug report.

   * You may get a warning from the compiler about `-static' being an
     unrecognized option.  Ignore it.  (This has already been reported
     to `bug-gcc'.)

   * Under SunOS 4.x, the programs which use X (XBfe and Limn) cannot be
     dynamically linked, because (apparently) `/bin/ld' pulls in the
     entire `.sa' file, and the Form, Label, and Viewport widgets are
     multiply defined.  (To us, this seems to defeat the whole purpose
     of having libraries.  It also seems bizarre to us that X was
     written so that these multibyte functions are always needed (via
     `__Xsi...'), and furthermore that the multibyte functions need to
     specifically call the dynamic linking functions.)

     The file `lib/dlsym.c' (from the MIT X distribution) defines the
     `dlsym', `dlclose', and `dlopen' symbols, so static linking should
     work now.

     If the current setup fails, it might work to change `-lXaw' in the
     definition of `X_libraries' in `lib/defs.make' to the full
     pathname of the Xaw library.

   * On many machines (Sun 3 or Sun 4 running SunOS 4.1, Sun386i running
     4.0.2, 386 running ISC 2.2), GCC 1.40 gets a fatal error compiling
     `imageto/main.c' with `-O'.  Just use `-g' for that file, or use a
     newer version of GCC.

   * On a 386 running Interactive UNIX 2.2, `<math.h>' declares the
     wrong prototype for `fmod': the routine takes two doubles, not one.
     We simply corrected our system include file.

     You may get compiler warnings for the file `widgets/Bitmap.c' at
     the lines which use the Xt function `XtIsRealized' on systems which
     define `NULL' as `(void *) 0'.  The reason is that macro
     definition of `XtIsRealized' in `<X11/IntrinsicP.h>' incorrectly
     compares the result of `XtWindowOfObject' to `NULL', instead of
     `0'.  If the warnings bother you, fix `IntrinsicP.h'.

   * The application resource files `limn/Limn' and `xbfe/XBfe' must be
     installed in a directory where your X server can find them.  This
     directory varies according to how X was installed; in the default X
     distribution, it is `/usr/lib/X11/app-defaults'.  If you cannot (or
     do not want to) write in the default directory, you can install
     them elsewhere and set the `XAPPLRESDIR' environment variable to
     that directory.  See the tutorial on resources that comes with the
     MIT X distribution (`mit/doc/tutorial/resources.txt') for more
     information.


  Good luck.
