(Fconstrain_to_field): Make sure we don't violate the
[bpt/emacs.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 728d239..aa5f7ea 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 GNU Emacs Installation Guide
-Copyright (c) 1992, 1994 Free software Foundation, Inc.
+Copyright (c) 1992, 1994, 1996, 1997 Free software Foundation, Inc.
 
    Permission is granted to anyone to make or distribute verbatim copies
    of this document as received, in any medium, provided that the
@@ -15,9 +15,48 @@ Copyright (c) 1992, 1994 Free software Foundation, Inc.
    of the Free Software Foundation are approved by the Foundation.
 
 
+ADDITIONAL DISTRIBUTION FILES
+
+* leim-M.N.tar.gz
+
+The Emacs Lisp code for input methods for various international
+character scripts is distributed in a separate tar file because it
+amounts to a significant fraction of the size of the distribution.
+This tar file is called leim-M.N.tar.gz, with the same version number
+as Emacs, and it unpacks into the directory emacs-M.N/leim.
+
+You should unpack leim-M.N.tar.gz into the same directory where you
+have previously unpacked the main Emacs distribution.  It fills in the
+contents of one subdirectory, which is present in the main Emacs
+distribution only in dummy form.
+
+Once you have unpacked the Leim tar file into the Emacs source tree,
+building and installing Emacs automatically installs the input method
+support as well.  If you have built Emacs without unpacking Leim
+first, just unpack Leim, build Emacs again, and install it again.
+
+* intlfonts-VERSION.tar.gz
+
+The intlfonts distribution contains X11 fonts that Emacs needs in
+order to display international characters.  If you see a non-ASCII
+character appear as a hollow box, that means you don't have a font for
+it.  You might find a font in the intlfonts distribution.  If some
+characters don't look right, or appear improperly aligned, a font
+from the intlfonts distribution might look better.
+
+The fonts in the intlfonts distribution are also used by the ps-print
+package for printing international characters.  The file
+lisp/ps-mule.el defines the .bdf font files required for printing
+each character set.
+
+The intlfonts distribution contains its own installation instructions,
+in the intlfonts/README file.
+
+
 BUILDING AND INSTALLATION:
-(This is for a Unix or Unix-like system.  For MSDOS, see below;
-search for MSDOG.  For Windows NT, see the file nt/INSTALL.)
+
+(This is for a Unix or Unix-like system.  For MSDOS, see below; search
+for MSDOG.  For Windows NT or Windows 95, see the file nt/INSTALL.)
 
 1) Make sure your system has enough swapping space allocated to handle
 a program whose pure code is 900k bytes and whose data area is at
@@ -37,15 +76,21 @@ then the installation procedure momentarily requires 70+35 Mb.
 give to the `configure' program.  That file offers hints for
 getting around some possible installation problems.
 
-3) In the top directory of the Emacs distribution, run the program
-`configure' as follows:
+3) You can build Emacs in the top-level Emacs source directory
+or in a separate directory.
+
+3a) To build in the top-level Emacs source directory, go to that
+directory and run the program `configure' as follows:
 
-    ./configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
+    ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ...
 
 The CONFIGURATION-NAME argument should be a configuration name given
-in `./etc/MACHINES'.  If omitted, `configure' will try to guess your
-system type; if it cannot, you must find the appropriate configuration
-name in `./etc/MACHINES' and specify it explicitly.
+in `./etc/MACHINES', with the system version number added at the end.
+
+You should try first omitting CONFIGURATION-NAME.  This way,
+`configure' will try to guess your system type.  If it cannot guess,
+or if something goes wrong in building or installing Emacs this way,
+try again specifying the proper CONFIGURATION-NAME explicitly.
 
 If you don't want X support, specify `--with-x=no'.  If you omit this
 option, `configure' will try to figure out for itself whether your
@@ -69,12 +114,13 @@ compile Emacs using GCC.  If you don't want to use GCC, specify
 `--with-gcc=no'.  If you omit this option, `configure' will search
 for GCC in your path, and use it if present.
 
-You can build Emacs for several different machine types from a single
-source directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  Make separate
-build directories for the different configuration types, and in each
-one, run the Emacs `configure' script.  `configure' looks for the
-Emacs source code in the directory that `configure' is in.
+If you want the Emacs mail reader RMAIL to read mail from a POP
+server, you must specify `--with-pop'.  This provides support for the
+POP3 protocol; older versions are not supported.  For
+Kerberos-authenticated POP add `--with-kerberos', for Hesiod support
+add `--with-hesiod'.  These options enable Emacs to use POP; whether
+Emacs uses POP is controlled by individual users--see the Rmail
+chapter of the Emacs manual.
 
 The `--prefix=PREFIXDIR' option specifies where the installation process
 should put emacs and its data files.  This defaults to `/usr/local'.
@@ -121,9 +167,30 @@ tests in FILE instead of `config.cache'.  Set FILE to `/dev/null' to
 disable caching, for debugging `configure'.
 
 The work of `configure' can be done by editing various files in the
-distribution, but using `configure' is supposed to be simpler.  See
-the section called "CONFIGURATION BY HAND" below if you want to do the
-configuration yourself.
+distribution, but using `configure' is easier.  See the section called
+"CONFIGURATION BY HAND" below if you want to do the configuration
+yourself.
+
+3b) To build in a separate directory, go to that directory
+and run the program `configure' as follows:
+
+    SOURCE-DIR/configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
+
+SOURCE-DIR refers to the top-level Emacs source directory which is
+where Emacs's configure script is located.  `configure' looks for the
+Emacs source code in the directory that `configure' is in.
+
+To build in a separate directory, you must use a version of `make'
+that supports the `VPATH' variable, such as GNU `make'.
+
+3c) Some people try to build in a separate directory by filling
+it full of symlinks to the files in the real source directory.
+If you do that, `make all' does work, but `make install' fails:
+it copies the symbolic links rather than the actual files.
+
+As far as is known, there is no particular reason to use
+a directory full of links rather than use the standard GNU
+facilities to build in a separate directory (see 3b above).
 
 4) Look at `./lisp/paths.el'; if some of those values are not right
 for your system, set up the file `./lisp/site-init.el' with Emacs
@@ -146,7 +213,8 @@ Lisp code you want Emacs to load before it is dumped out.  Use
 site-load.el for additional libraries if you arrange for their
 documentation strings to be in the etc/DOC file (see
 src/Makefile.in if you wish to figure out how to do that).  For all
-else, use site-init.el.
+else, use site-init.el.  Do not load byte-compiled code which
+was build with a non-nil value of `byte-compile-dynamic'.
 
 If you set load-path to a different value in site-init.el or
 site-load.el, Emacs will use *precisely* that value when it starts up
@@ -155,7 +223,7 @@ again.  If you do this, you are on your own!
 Note that, on some systems, the code you place in site-init.el must
 not use expand-file-name or any other function which may look
 something up in the system's password and user information database.
-See `./PROBLEMS' for more details on which systems this affects.
+See `./etc/PROBLEMS' for more details on which systems this affects.
 
 The `site-*.el' files are nonexistent in the distribution.  You do not
 need to create them if you have nothing to put in them.
@@ -204,10 +272,6 @@ are installed in the following directories:
                architecture-independent files Emacs might need while
                running.  VERSION is as specified for `.../lisp'.
 
-`/usr/local/com/emacs/lock' contains files indicating who is editing
-               what, so Emacs can detect editing clashes between
-               users.
-
 `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
                programs used by Emacs that users are not expected to
                run themselves.
@@ -284,14 +348,6 @@ Here is a complete list of the variables you may want to set.
        same time; this means that you don't have to make Emacs
        unavailable while installing a new version.
 
-`sharedstatedir' indicates where to put architecture-independent data files
-       that Emacs modifies while it runs; it defaults to
-       /usr/local/com.  We create the following
-       subdirectories under `sharedstatedir':
-       - `emacs/lock', containing files indicating who is editing
-               what, so Emacs can detect editing clashes between
-               users.
-
 `libexecdir' indicates where to put architecture-specific data files that
        Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
        We create the following subdirectories under `libexecdir':
@@ -343,33 +399,7 @@ Here is a complete list of the variables you may want to set.
        path variables - `bindir' and `libexecdir'.
 
 The above variables serve analogous purposes in the makefiles for all
-GNU software; here are some variables specific to Emacs.
-
-`lispdir' indicates where Emacs installs and expects its Lisp library.
-       Its default value, based on `datadir' (see above), is
-       `/usr/local/share/emacs/VERSION/lisp' (where `VERSION' is as
-       described above).
-
-`locallisppath' indicates where Emacs should search for Lisp files
-       specific to your site.  It should be a colon-separated list of
-       directories; Emacs checks them in order before checking
-       `lispdir'.  Its default value, based on `datadir' (see above), is
-       `/usr/local/share/emacs/VERSION/site-lisp:/usr/local/share/emacs/site-lisp'.
-
-`lisppath' is the complete list of directories Emacs should search for
-       its Lisp files; its default value is the concatenation of
-       `locallisppath' and `lispdir'.  It should be a colon-separated
-       list of directories; Emacs checks them in the order they
-       appear.
-
-`etcdir' indicates where Emacs should install and expect the rest of
-       its architecture-independent data, like the tutorial, DOC
-       file, and yow database.  Its default value, based on `datadir'
-       (which see), is `/usr/local/share/emacs/VERSION/etc'.
-
-`lockdir' indicates the directory where Emacs keeps track of its
-       locking information.  Its default value, based on
-       `sharedstatedir' (which see), is `/usr/local/com/emacs/lock'.
+GNU software; this variable is specific to Emacs.
 
 `archlibdir' indicates where Emacs installs and expects the executable
        files and other architecture-dependent data it uses while
@@ -385,6 +415,11 @@ settings persist, you can edit them into the `Makefile' in the top
 directory, but be aware that running the `configure' program erases
 `Makefile' and rebuilds it from `Makefile.in'.
 
+The path for finding Lisp files is specified in src/paths.h,
+a file which is generated by running configure.  To change the path,
+you can edit the definition of PATH_LOADSEARCH in that file
+before you run `make'.
+
 The top-level Makefile stores the variable settings it used in the
 Makefiles for the subdirectories, so you don't have to specify them
 when running make in the subdirectories.
@@ -478,10 +513,7 @@ probably don't want to replace it with the `dir' file in the Emacs
 distribution.  Instead, you should make sure that the existing `dir'
 file contains an appropriate menu entry for the Emacs info.
 
-3) Create a directory for Emacs to use for clash detection, named as
-indicated by the PATH_LOCK macro in `./src/paths.h'.
-
-4) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
+3) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
 in users' search paths.  `./src/emacs' has an alternate name
 `./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
 `/usr/local/bin/emacs' pointing to that alternate name, as an easy way
@@ -489,73 +521,136 @@ of installing different versions.
 
 You can delete `./src/temacs'.
 
-5) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
+4) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
 `rcs-checkin' from `./lib-src' to `/usr/local/bin'.  These programs are
 intended for users to run.
 
-6) Copy the man pages in `./etc' for emacs, ctags, and etags into the
+5) Copy the man pages in `./etc' for emacs, ctags, and etags into the
 appropriate man directories.
 
-7) The files in the `./src' subdirectory, except for `emacs', are not
+6) The files in the `./src' subdirectory, except for `emacs', are not
 used by Emacs once it is built.  However, it is very desirable to keep
 the source on line for debugging.
 
 
 PROBLEMS
 
-See the file PROBLEMS in this directory for a list of various
+See the file PROBLEMS in etc subdirectory for a list of various
 problems sometimes encountered, and what to do about them.
 
 
 Installation on MSDOG (a.k.a. MSDOS)
 
 To install on MSDOG, you need to have the GNU C compiler for MSDOG
-(also known as djgpp), GNU Make, rm, mv, chmod, and sed.  See the
-remarks in config.bat for more information about locations and
-versions.
-
-If you are compiling on an MSDOG-like system which has long file
-names, you may need to do `SET LFN=y' for some of the commands,
-especially the compilation commands.  It might be more convenient to
-unpack the Emacs distribution with djtar, which comes with djgpp; if
-you do `SET LFN=n' before unpacking, djtar truncates file names to 8.3
-naming as it extracts files, even if the system allows long file
-names, and this ensures that build procedures designed for 8.3 file
-names still work.  Use djtar with the command `djtar -x foo.tar' or
-`djtar -x foo.tgz'.
-
-Some users report that running Emacs 19.29 requires dpmi memory
-management.  We do not know why this is so, since 19.28 did not need
-it.  If we find out what change introduced this requirement, we may
-try to eliminate it.  ("May" because perhaps djgpp version 2's
-improved dpmi handling means this is no longer a problem.)
-
-It is possible that this problem happens only when there is not enough
-physical memory on the machine.
-
-You can find out if you have a dpmi host by running go32 (part of
-djgpp) without arguments; it will tell you if it uses dpmi memory.
-For more information about dpmi memory, consult the djgpp FAQ.
-
-To build and install Emacs, type these commands:
+(also known as djgpp), GNU Make, rm, mv, and sed.  See the remarks in
+config.bat for more information about locations and versions.  The
+file etc/FAQ includes pointers to Internet sites where you can find
+the necessary utilities; search for "MS-DOS".  The configuration step
+(see below) will test for these utilities and will refuse to continue
+if any of them isn't found.
+
+If you are building the MSDOG version of Emacs on an MSDOG-like system
+which supports long file names (e.g. Windows 95), you need to make
+sure that long file names are handled consistently both when you
+unpack the distribution and compile it.  If you intend to compile with
+DJGPP v2.0 or later, and long file names support is enabled (LFN=y in
+the environment), you need to unpack Emacs distribution in a way that
+doesn't truncate the original long filenames to the DOS 8.3 namespace;
+the easiest way to do this is to use djtar program which comes with
+DJGPP, since it will note the LFN setting and behave accordingly.
+DJGPP v1 doesn't support long filenames, so you must unpack Emacs with
+a program that truncates the filenames to 8.3 naming as it extracts
+files; again, using djtar after setting LFN=n is the recommended way.
+You can build Emacs with LFN=n even if you use DJGPP v2, if some of
+your tools don't support long file names: just ensure that LFN is set
+to `n' during both unpacking and compiling.
+
+(By the time you read this, you have already unpacked the Emacs
+distribution, but if the explanations above imply that you should have
+done it differently, it's safer to delete the directory tree created
+by the unpacking program and unpack Emacs again, than to risk running
+into problems during the build process.)
+
+It is important to understand that the runtime support of long file
+names by the Emacs binary is NOT affected by the LFN setting during
+compilation; Emacs compiled with DJGPP v2.0 or later will always
+support long file names on Windows 95 no matter what was the setting
+of LFN at compile time.  However, if you compiled with LFN disabled
+and want to enable LFN support after Emacs was already built, you need
+to make sure that the support files in the lisp, etc and info
+directories are called by their original long names as found in the
+distribution.  You can do this either by renaming the files manually,
+or by extracting them from the original distribution archive with
+djtar after you set LFN=y in the environment.
+
+To unpack Emacs with djtar, type this command:
+
+    djtar -x emacs.tgz
+
+(This assumes that the Emacs distribution is called `emacs.tgz' on
+your system.)
+
+If you need to type international characters, you will need to unpack
+the Leim distribution (see the description near the beginning of this
+file).  You unpack it from the same directory where you unpacked
+Emacs.  To unpack Leim with djtar, assuming the Leim distribution is
+called `leim.tgz', type this command:
+
+    djtar -x leim.tgz
+
+If you want to print international characters, install the intlfonts
+distribution.  For this, create a directory called `fonts' under the
+Emacs top-level directory (usually called `emacs-XX.YY') created by
+unpacking emacs.tgz, chdir into the directory emacs-XX.YY/fonts, and
+type this:
+
+    djtar -x intlfonts.tgz
+
+When unpacking is done, a directory called `emacs-XX.YY' will be
+created, where XX.YY is the Emacs version.  To build and install
+Emacs, chdir to that directory and type these commands:
 
     config msdos
     make install
 
+To install the international fonts, chdir to the intlfonts-X.Y
+directory created when you unpacked the intlfonts distribution (X.Y is
+the version number of the fonts' distribution), and type the following
+command:
+
+    make bdf INSTALLDIR=..
+
+After Make finishes, you may remove the directory intlfonts-X.Y; the
+fonts are installed into the fonts/bdf subdirectory of the top-level
+Emacs directory, and that is where Emacs will look for them by
+default.
+
 Building Emacs creates executable files in the src and lib-src
 directories.  Installing Emacs on MSDOS moves these executables to a
 sibling directory called bin.  For example, if you build in directory
 /emacs, installing moves the executables from /emacs/src and
 /emacs/lib-src to the directory /emacs/bin, so you can then delete the
 subdirectories /emacs/src and /emacs/lib-src if you wish.  The only
-subdirectories you need to keep are bin, lisp, etc and info.
+subdirectories you need to keep are bin, lisp, etc and info.  (If you
+installed Leim, keep the leim subdirectory, and if you installed
+intlfonts, keep the fonts directory and all its sibdirectories as well.)
+The bin subdirectory should be added to your PATH.  The msdos
+subdirectory includes a PIF and an icon file for Emacs which you might
+find useful if you run Emacs under MS Windows.
 
 Emacs on MSDOS finds the lisp, etc and info directories by looking in
 ../lisp, ../etc and ../info, starting from the directory where the
 Emacs executable was run from.  You can override this by setting the
-environment variable HOME; if you do that, the directories lisp, etc
-and info are accessed as subdirectories of the HOME directory.
+environment variables EMACSDATA (for the location of `etc' directory),
+EMACSLOADPATH (for the location of `lisp' directory) and INFOPATH (for
+the location of the `info' directory).
 
 MSDOG is a not a multitasking operating system, so Emacs features such
 as asynchronous subprocesses that depend on multitasking will not
 work.  Synchronous subprocesses do work.
+
+Version 2.0 of djgpp has two bugs that affect Emacs.  We've included
+corrected versions of two files from djgpp in the msdos subdirectory:
+is_exec.c and sigaction.c.  To work around the bugs, compile these
+files and link them into temacs.  Djgpp version 2.01 have these bugs
+fixed, so upgrade if you can before building Emacs.