The `--run-in-place' option sets up default values for the path
variables in `./Makefile' so that Emacs will expect to find its data
files (lisp libraries, runnable programs, and the like) in the same
-locations they occupy while Emacs builds. This means that you don't
-have to install Emacs in order to run it; it uses its data files as
-they were unpacked.
+locations they occupy while Emacs builds. If you use `--run-in-place'
+then you don't need to do `make install'.
+
+`--run-in-place' is pretty much obsolete now. If you put the Emacs
+executable in a subdirectory named src, which has siblings named lisp,
+lib-src, etc, info and so on, Emacs automatically uses those sibling
+directories if the standard installation directory names don't contain
+what Emacs needs.
The `--with-gcc' option specifies that the build process should
compile Emacs using GCC. If you don't want to use GCC, specify
Note that `configure' doesn't do any compilation or installation
itself. It just creates the files that influence those things:
-`./Makefile', `build-install', and `./src/config.h'. For details on
-exactly what it does, see the section called `CONFIGURATION BY HAND',
-below.
+`./Makefile', `lib-src/Makefile', `oldXMenu/Makefile',
+`lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details
+on exactly what it does, see the section called `CONFIGURATION BY
+HAND', below.
When it is done, `configure' prints a description of what it did and
leaves a copy in the file `config.status'. That file is also a shell
By default, Emacs installs its files in the following directories:
`/usr/local/bin' holds the executable programs users normally run -
- `emacs', `etags', `ctags', `b2m', and `emacsclient'.
+ `emacs', `etags', `ctags', `b2m', `emacsclient',
+ and `rcs-checkin'.
`/usr/local/lib/emacs/VERSION/lisp' holds the Emacs Lisp library;
`VERSION' stands for the number of the Emacs version
`datadir' indicates where to put the architecture-independent
read-only data files that Emacs refers to while it runs; it
- defaults to /usr/local/lib. We create the following
+ defaults to /usr/local/share. We create the following
subdirectories under `datadir':
- `emacs/VERSION/lisp', containing the Emacs lisp library, and
- `emacs/VERSION/etc', containing the Emacs tutorial, the DOC
same time; this means that you don't have to make Emacs
unavailable while installing a new version.
-`statedir' indicates where to put architecture-independent data files
+`sharedstatedir' indicates where to put architecture-independent data files
that Emacs modifies while it runs; it defaults to
- /usr/local/lib as well. We create the following
- subdirectories under `statedir':
+ /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.
-`libdir' indicates where to put architecture-specific data files that
- Emacs refers to as it runs; it too defaults to `/usr/local/lib'.
- We create the following subdirectories under `libdir':
+`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':
- `emacs/VERSION/CONFIGURATION-NAME', containing executable
programs used by Emacs that users are not expected to run
themselves.
`prefix' doesn't give a path for any specific part of Emacs; instead,
its value is used to determine the defaults for all the
architecture-independent path variables - `datadir',
- `statedir', `infodir', and `mandir'. Its default value is
+ `sharedstatedir', `infodir', and `mandir'. Its default value is
`/usr/local'; the other variables add on `lib' or `man' to it
by default.
`exec_prefix' serves the same purpose as `prefix', but instead
determines the default values for the architecture-dependent
- path variables - `bindir' and `libdir'.
+ 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.
(which see), is `/usr/local/lib/emacs/VERSION/etc'.
`lockdir' indicates the directory where Emacs keeps track of its
- locking information. Its default value, based on `statedir'
+ locking information. Its default value, based on `sharedstatedir'
(which see), is `/usr/local/lib/emacs/lock'.
`archlibdir' indicates where Emacs installs and expects the
executable files and other architecture-dependent data it uses
- while running. Its default value, based on `libdir' (which
+ while running. Its default value, based on `libexecdir' (which
see), is `/usr/local/lib/emacs/VERSION/CONFIGURATION-NAME'
(where VERSION and CONFIGURATION-NAME are as described above).
CONFIGURATION BY HAND
-Running the `configure' program performs the following steps.
+Instead of running the `configure' program, you have to perform the
+following steps.
1) Copy `./src/config.h.in' to `./src/config.h'.
changing the s/*.h and m/*.h files. Occasionally you may need to
redefine parameters used in `./lib-src/movemail.c'.
-3) If you're going to use the make utility to build Emacs, you will
-still need to run `configure' first, giving theappropriate values for
-the variables in the sections entitled "Things `configure' Might Edit"
-and "Where To Install Things." Note that you may only need to change
-the variables `prefix' and `exec_prefix', since the rest of the
-variables have reasonable defaults based on them. For each Makefile
-variable of this type, there is a corresponding configure option; for
-example, to change the location of the lock directory, you might use
-
- ./configure --lockdir=/nfs/emacslock
+3) Create src/Makefile and lib-src/Makefile from the corresponding
+`Makefile.in.in' files. First copy `Makefile.in.in' to `Makefile.in',
+then edit in appropriate substituions for the @...@ constructs,
+and then copy the shell commands near the end of `configure'
+that run cpp to construct `Makefile'.
-4) If you're going to use the build-install script to build Emacs,
-copy `./build-ins.in' to `./build-install', and edit the
-definitions found at the top of the script.
+4) Create `Makefile' files in various other directories
+from the corresponding `Makefile.in' files. This isn't so hard,
+just a matter of substitution.
The `configure' script is built from `configure.in' by the `autoconf'
program. However, since Emacs has configuration requirements that
BUILDING GNU EMACS BY HAND
-Once Emacs is configured, running `make' or running the shell script
-`build-install' in the top directory performs the following steps.
+Once Emacs is configured, running `make' in the top directory performs
+the following steps.
1) Run `make src/paths.h' in the top directory. This produces
`./src/paths.h' from the template file `./src/paths.h.in', changing
the paths to the values specified in `./Makefile'.
-2) Cd to `./lib-src' and run `make'. This creates executables named
-`ctags' and `etags' and `wakeup' and `make-docfile' and `digest-doc'
-and `test-distrib'. And others.
+2) Go to directory `./lib-src' and run `make'. This creates
+executables named `ctags' and `etags' and `wakeup' and `make-docfile'
+and `digest-doc' and `test-distrib'. And others.
-3) Cd to `./src' and Run `make'. This refers to files in the `./lisp'
-and `./lib-src' subdirectories using names `../lisp' and
+3) Go to directory `./src' and Run `make'. This refers to files in
+the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
`../lib-src'.
This creates a file `./src/emacs' which is the runnable Emacs,
-assigning it a new build version number by incrementing the build
-version stored in `./lisp/version.el'.
+which has another name that contains a version number.
+Each time you do this, that version number increments in the last place.
It also creates a file in `./etc' whose name is `DOC' followed by the
current Emacs version. This file contains documentation strings for
INSTALLATION BY HAND
-The steps below are done by the shell script `build-install' or by
-running `make install' in the main directory of the Emacs
-distribution.
+The steps below are done by running `make install' in the main
+directory of the Emacs distribution.
1) Copy `./lisp' and its subdirectories, `./etc', and the executables
in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
Strictly speaking, not all of the executables in `./lib-src' need be copied.
- The programs `cvtmail', `emacsserver', `fakemail', `hexl',
- `movemail', `timer', `vcdiff', `wakeup', and `yow' are used by
- Emacs; they do need to be copied.
-- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs2log'
+ `movemail', `profile', `rcs2log', `timer', `vcdiff', `wakeup',
+ and `yow' are used by Emacs; they do need to be copied.
+- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
are intended to be run by users; they are handled below.
-- The programs `make-docfile', `make-path', and `test-distrib' were
+- The programs `make-docfile' and `test-distrib' were
used in building Emacs, and are not needed any more.
- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into
a file for users to read. There is no important reason to move them.
You can delete `./src/temacs'.
5) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
-`rcs2log' from `./lib-src' to `/usr/local/bin'. These programs are
+`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
appropriate man directories.
7) The files in the `./src' subdirectory, except for `emacs', are not
-used by Emacs once it is built. The source would be handy for
-debugging.
+used by Emacs once it is built. However, it is very desirable to keep
+the source on line for debugging.
PROBLEMS