123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768 |
- GNU Emacs Installation Guide
- Copyright (C) 1992, 1994, 1996-1997, 2000-2012
- Free Software Foundation, Inc.
- See the end of the file for license conditions.
- This file contains general information on building GNU Emacs.
- For more information specific to the MS-Windows, GNUstep/Mac OS X, and
- MS-DOS ports, also read the files nt/INSTALL, nextstep/INSTALL, and
- msdos/INSTALL. For information about building from a Bazaar checkout
- (rather than a release), also read the file INSTALL.BZR.
- BASIC INSTALLATION
- On most Unix systems, you build Emacs by first running the `configure'
- shell script. This attempts to deduce the correct values for
- various system-dependent variables and features, and find the
- directories where certain system headers and libraries are kept.
- In a few cases, you may need to explicitly tell configure where to
- find some things, or what options to use.
- `configure' creates a `Makefile' in several subdirectories, and a
- `src/config.h' file containing system-dependent definitions.
- Running the `make' utility then builds the package for your system.
- Here's the procedure to build Emacs using `configure' on systems which
- are supported by it. In some cases, if the simplified procedure fails,
- you might need to use various non-default options, and maybe perform
- some of the steps manually. The more detailed description in the other
- sections of this guide will help you do that, so please refer to those
- sections if you need to.
- 1. Unpacking the Emacs 24.1 release requires about 180 MB of free
- disk space. Building Emacs uses about another 70 MB of space.
- The final installed Emacs uses about 110 MB of disk space.
- This includes the space-saving that comes from automatically
- compressing the Lisp source files on installation.
- 2a. `cd' to the directory where you unpacked Emacs and invoke the
- `configure' script:
- ./configure
- 2b. Alternatively, create a separate directory, outside the source
- directory, where you want to build Emacs, and invoke `configure'
- from there:
- SOURCE-DIR/configure
- where SOURCE-DIR is the top-level Emacs source directory.
- This may not work unless you use GNU make.
- 3. When `configure' finishes, it prints several lines of details
- about the system configuration. Read those details carefully
- looking for anything suspicious, such as wrong CPU and operating
- system names, wrong places for headers or libraries, missing
- libraries that you know are installed on your system, etc.
- If you find anything wrong, you may have to pass to `configure'
- one or more options specifying the explicit machine configuration
- name, where to find various headers and libraries, etc.
- Refer to the section DETAILED BUILDING AND INSTALLATION below.
- If `configure' didn't find some (optional) image support libraries,
- such as Xpm, jpeg, etc., and you want to use them, refer to the
- subsection "Image support libraries" below.
- If the details printed by `configure' don't make any sense to
- you, but there are no obvious errors, assume that `configure' did
- its job and proceed.
- 4. If you need to run the `configure' script more than once (e.g.,
- with some non-default options), always clean the source
- directories before running `configure' again:
- make distclean
- ./configure
- 5. Invoke the `make' program:
- make
- 6. If `make' succeeds, it will build an executable program `emacs'
- in the `src' directory. You can try this program, to make sure
- it works:
- src/emacs -Q
- 7. Assuming that the program `src/emacs' starts and displays its
- opening screen, you can install the program and its auxiliary
- files into their installation directories:
- make install
- You are now ready to use Emacs. If you wish to conserve disk space,
- you may remove the program binaries and object files from the
- directory where you built Emacs:
- make clean
- You can delete the entire build directory if you do not plan to
- build Emacs again, but it can be useful to keep for debugging.
- Note that the install automatically saves space by compressing
- (provided you have the `gzip' program) those installed Lisp source (.el)
- files that have corresponding .elc versions, as well as the Info files.
- ADDITIONAL DISTRIBUTION FILES
- * Complex Text Layout support libraries
- On GNU and Unix systems, Emacs needs the optional libraries "m17n-db",
- "libm17n-flt", "libotf" to correctly display such complex scripts as
- Indic and Khmer, and also for scripts that require Arabic shaping
- support (Arabic and Farsi). On some systems, particularly GNU/Linux,
- these libraries may be already present or available as additional
- packages. Note that if there is a separate `dev' or `devel' package,
- for use at compilation time rather than run time, you will need that
- as well as the corresponding run time package; typically the dev
- package will contain header files and a library archive. Otherwise,
- you can download and build libraries from sources.
- The sources of these libraries are available by anonymous CVS from
- cvs.m17n.org.
- % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n login
- % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co m17n-db
- % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co m17n-lib
- % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co libotf
- For m17n-lib, if you have problems with making the whole package
- because you lack some other packages on which m17n-lib depends, try to
- configure it with the option "--without-gui".
- Note that Emacs cannot support complex scripts on a TTY, unless the
- terminal includes such a support.
- * intlfonts-VERSION.tar.gz
- The intlfonts distribution contains X11 fonts in various encodings
- that Emacs can use 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 one in the intlfonts distribution. If
- you do have a font for a non-ASCII character, but 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.
- * Image support libraries
- Emacs needs optional libraries to be able to display images (with the
- exception of PBM and XBM images whose support is built-in).
- On some systems, particularly on GNU/Linux, these libraries may
- already be present or available as additional packages. Note that if
- there is a separate `dev' or `devel' package, for use at compilation
- time rather than run time, you will need that as well as the
- corresponding run time package; typically the dev package will
- contain header files and a library archive. Otherwise, you can
- download and build libraries from sources. None of them are vital for
- running Emacs; however, note that Emacs will not be able to use
- colored icons in the toolbar if XPM support is not compiled in.
- Here's the list of some of these optional libraries, and the URLs
- where they can be found (in the unlikely event that your distribution
- does not provide them):
- . libXaw3d http://directory.fsf.org/project/xaw3d/
- . libxpm for XPM: http://www.x.org/releases/current/src/lib/
- . libpng for PNG: http://www.libpng.org/
- . libz (for PNG): http://www.zlib.net/
- . libjpeg for JPEG: http://www.ijg.org/
- . libtiff for TIFF: http://www.libtiff.org/
- . libgif for GIF: http://sourceforge.net/projects/giflib/
- Emacs will configure itself to build with these libraries if the
- `configure' script finds them on your system, unless you supply the
- appropriate --without-LIB option. In some cases, older versions of
- these libraries won't work because some routines are missing, and
- configure should avoid such old versions. If that happens, use the
- --without-LIB options to `configure', if you need to.
- * Extra fonts
- The Emacs distribution does not include fonts and does not install
- them.
- On the GNU system, Emacs supports both X fonts and local fonts
- (i.e. fonts managed by the fontconfig library). If you need more
- fonts than your distribution normally provides, you must install them
- yourself. See <URL:http://www.gnu.org/software/freefont/> for a large
- number of free Unicode fonts.
- * GNU/Linux development packages
- Many GNU/Linux systems do not come with development packages by default;
- they include the files that you need to run Emacs, but not those you
- need to compile it. For example, to compile Emacs with support for X
- and graphics libraries, you may need to install the `X development'
- package(s), and development versions of the jpeg, png, etc. packages.
- The names of the packages that you need varies according to the
- GNU/Linux distribution that you use, and the options that you want to
- configure Emacs with. On Debian-based systems, you can install all the
- packages needed to build the installed version of Emacs with a command
- like `apt-get build-dep emacs23'. On Red Hat systems, the
- corresponding command is `yum-builddep emacs'.
- DETAILED BUILDING AND INSTALLATION:
- (This is for a Unix or Unix-like system. For MS-DOS and MS Windows 3.X,
- see msdos/INSTALL. For later versions of MS Windows, see the file
- nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.)
- 1) Make sure your system has enough swapping space allocated to handle
- a program whose pure code is 1.5 MB and whose data area is at
- least 2.8 MB and can reach 100 MB or more. If the swapping space is
- insufficient, you will get an error in the command `temacs -batch -l
- loadup dump', found in `./src/Makefile.in', or possibly when
- running the final dumped Emacs. (This should not be an issue
- on any recent system.)
- Building Emacs requires about 230 MB of disk space (including the
- Emacs sources). Once installed, Emacs occupies about 120 MB in the file
- system where it is installed; this includes the executable files, Lisp
- libraries, miscellaneous data files, and on-line documentation. If
- the building and installation take place in different directories,
- then the installation procedure momentarily requires 230+120 MB.
- 2) In the unlikely event that `configure' does not detect your system
- type correctly, consult `./etc/MACHINES' to see what --host, --build
- options you should pass to `configure'. That file also offers hints
- for getting around some possible installation problems.
- 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 [--OPTION[=VALUE]] ...
- If `configure' cannot determine your system type, try again
- specifying the proper --build, --host options 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
- system has X, and arrange to use it if present.
- The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
- process where the compiler should look for the include files and
- object libraries used with the X Window System. Normally, `configure'
- is able to find them; these options are necessary if you have your X
- Window System files installed in unusual places. These options also
- accept a list of directories, separated with colons.
- To get more attractive menus, you can specify an X toolkit when you
- configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
- TOOLKIT is `gtk' (the default), `athena', or `motif' (`yes' and
- `lucid' are synonyms for `athena'). On some systems, it does not work
- to use a toolkit with shared libraries. A free implementation of
- Motif, called LessTif, is available from <http://www.lesstif.org>.
- Compiling with LessTif or Motif causes a standard File Selection
- Dialog to pop up when you invoke file commands with the mouse. You
- can get fancy 3D-style scroll bars, even without Gtk or LessTif/Motif,
- if you have the Xaw3d library installed (see "Image support libraries"
- above for Xaw3d availability).
- You can tell configure where to search for GTK by specifying
- `--with-pkg-config-prog=PATH' where PATH is the pathname to
- pkg-config. Note that GTK version 2.6 or newer is required for Emacs.
- The Emacs mail reader RMAIL is configured to be able to read mail from
- a POP3 server by default. Versions of the POP protocol older than
- POP3 are not supported. For Kerberos-authenticated POP add
- `--with-kerberos', for Hesiod support add `--with-hesiod'. While POP3
- is always enabled, whether Emacs actually uses POP is controlled by
- individual users--see the Rmail chapter of the Emacs manual.
- For image support you may have to download, build, and install the
- appropriate image support libraries for image types other than XBM and
- PBM, see the list of URLs in "ADDITIONAL DISTRIBUTION FILES" above.
- (Note that PNG support requires libz in addition to libpng.)
- To disable individual types of image support in Emacs for some reason,
- even though configure finds the libraries, you can configure with one
- or more of these options:
- --without-xpm for XPM image support
- --without-jpeg for JPEG image support
- --without-tiff for TIFF image support
- --without-gif for GIF image support
- --without-png for PNG image support
- Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d
- scroll bars.
- Use --without-xim to inhibit the default use of X Input Methods.
- In this case, the X resource useXIM can be used to turn on use of XIM.
- Use --disable-largefile to omit support for files larger than 2GB on
- systems which support that.
- Use --without-sound to disable sound support.
- Use --with-wide-int to implement Emacs values with the type 'long long',
- even on hosts where a narrower type would do. With this option, on a
- typical 32-bit host, Emacs integers have 62 bits instead of 30.
- The `--prefix=PREFIXDIR' option specifies where the installation process
- should put emacs and its data files. This defaults to `/usr/local'.
- - Emacs (and the other utilities users run) go in PREFIXDIR/bin
- (unless the `--exec-prefix' option says otherwise).
- - The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
- (where VERSION is the version number of Emacs, like `23.2').
- - The architecture-dependent files go in
- PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
- (where CONFIGURATION is the configuration name, like
- i686-pc-linux-gnu), unless the `--exec-prefix' option says otherwise.
- The `--exec-prefix=EXECDIR' option allows you to specify a separate
- portion of the directory tree for installing architecture-specific
- files, like executables and utility programs. If specified,
- - Emacs (and the other utilities users run) go in EXECDIR/bin, and
- - The architecture-dependent files go in
- EXECDIR/libexec/emacs/VERSION/CONFIGURATION.
- EXECDIR/bin should be a directory that is normally in users' PATHs.
- For example, the command
- ./configure --build=i386-linux-gnu --without-sound
- configures Emacs to build for a 32-bit GNU/Linux distribution,
- without sound support.
- `configure' doesn't do any compilation or installation itself.
- It just creates the files that influence those things:
- `./Makefile' in the top-level directory and several subdirectories;
- 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
- creates a shell script `config.status' which, when run, recreates the
- same configuration. If `configure' exits with an error after
- disturbing the status quo, it removes `config.status'. `configure'
- also creates a file `config.cache' that saves the results of its tests
- to make reconfiguring faster, and a file `config.log' containing compiler
- output (useful mainly for debugging `configure'). You can give
- `configure' the option `--cache-file=FILE' to use the results of the
- tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
- disable caching, for debugging `configure'.
- If the description of the system configuration printed by `configure'
- is not right, or if it claims some of the features or libraries are not
- available when you know they are, look at the `config.log' file for
- the trace of the failed tests performed by `configure' to check
- whether these features are supported. Typically, some test fails
- because the compiler cannot find some function in the system
- libraries, or some macro-processor definition in the system headers.
- Some tests might fail because the compiler should look in special
- directories for some header files, or link against optional
- libraries, or use special compilation options. You can force
- `configure' and the build process which follows it to do that by
- setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC
- before running `configure'. CPP is the command which invokes the
- preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are
- compilation options, LDFLAGS are options used when linking, LIBS are
- libraries to link against, and CC is the command which invokes the
- compiler. By default, gcc is used if available.
- Here's an example of a `configure' invocation, assuming a Bourne-like
- shell such as Bash, which uses these variables:
- CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
- CFLAGS='-O3' LIBS='-lfoo -lbar' ./configure
- (this is all one long line). This tells `configure' to instruct the
- preprocessor to look in the `/foo/myinclude' directory for header
- files (in addition to the standard directories), instruct the linker
- to look in `/bar/mylib' for libraries, pass the -O3 optimization
- switch to the compiler, and link against libfoo and libbar
- libraries in addition to the standard ones.
- For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses
- pkg-config to find where those libraries are installed.
- If you want pkg-config to look in special directories, you have to set
- the environment variable PKG_CONFIG_PATH to point to the directories
- where the .pc-files for those libraries are.
- For example:
- PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig' \
- ./configure
- The work of `configure' can be done by editing various files in the
- 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'.
- (Do not try to build in a separate directory by creating many links
- to the real source directory--there is no need, and installation will
- fail.)
- 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
- Lisp code to override them; it is not a good idea to edit paths.el
- itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES,
- rather than `defvar', as used by `./lisp/paths.el'. For example,
- (setq news-inews-program "/usr/bin/inews")
- is how you would override the default value of the variable
- news-inews-program.
- Before you override a variable this way, *look at the value* that the
- variable gets by default! Make sure you know what kind of value the
- variable should have. If you don't pay attention to what you are
- doing, you'll make a mistake.
- 5) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
- 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. Do not load byte-compiled code which
- was built 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
- again. If you do this, you are on your own!
- The `site-*.el' files are nonexistent in the distribution. You do not
- need to create them if you have nothing to put in them.
- 6) Refer to the file `./etc/TERMS' for information on fields you may
- wish to add to various termcap entries. (This is unlikely to be necessary.)
- 7) Run `make' in the top directory of the Emacs distribution to finish
- building Emacs in the standard way. The final executable file is
- named `src/emacs'. You can execute this file "in place" without
- copying it, if you wish; then it automatically uses the sibling
- directories ../lisp, ../lib-src, ../info.
- Or you can "install" the executable and the other files into their
- installed locations, with `make install'. By default, Emacs's files
- are installed in the following directories:
- `/usr/local/bin' holds the executable programs users normally run -
- `emacs', `etags', `ctags', `emacsclient',
- `grep-changelog', and `rcs-checkin'.
- `/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
- `VERSION' stands for the number of the Emacs version
- you are installing, like `23.1' or `23.2'. Since the
- Lisp library changes from one version of Emacs to
- another, including the version number in the path
- allows you to have several versions of Emacs installed
- at the same time; in particular, you don't have to
- make Emacs unavailable while installing a new version.
- `/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
- file, and other architecture-independent files Emacs
- might need while running.
- `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
- programs used by Emacs that users are not expected to
- run themselves.
- `VERSION' is the number of the Emacs version you are
- installing, and `CONFIGURATION-NAME' is the value
- deduced by the `configure' program to identify the
- architecture and operating system of your machine,
- like `i686-pc-linux-gnu' or `sparc-sun-sunos'. Since
- these files are specific to the version of Emacs,
- operating system, and architecture in use, including
- the configuration name in the path allows you to have
- several versions of Emacs for any mix of machines and
- operating systems installed at the same time; this is
- useful for sites at which different kinds of machines
- share the file system Emacs is installed on.
- `/usr/local/share/info' holds the on-line documentation for Emacs,
- known as "info files". Many other GNU programs are
- documented using info files as well, so this directory
- stands apart from the other, Emacs-specific directories.
- `/usr/local/share/man/man1' holds the man pages for the programs installed
- in `/usr/local/bin'.
- Any version of Emacs, whether installed or not, also looks for Lisp
- files in these directories.
- `/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
- files installed for Emacs version VERSION only.
- `/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
- files installed for all Emacs versions.
- When Emacs is installed, it searches for its Lisp files
- in `/usr/local/share/emacs/VERSION/site-lisp', then in
- `/usr/local/share/emacs/site-lisp', and finally in
- `/usr/local/share/emacs/VERSION/lisp'.
- If these directories are not what you want, you can specify where to
- install Emacs's libraries and data files or where Emacs should search
- for its Lisp files by giving values for `make' variables as part of
- the command. See the section below called `MAKE VARIABLES' for more
- information on this.
- 8) Check the file `dir' in your site's info directory (usually
- /usr/local/share/info) to make sure that it has a menu entry for the
- Emacs info files.
- 9) If your system uses lock files to interlock access to mailer inbox files,
- then you might need to make the movemail program setuid or setgid
- to enable it to write the lock files. We believe this is safe.
- 10) You are done! You can remove executables and object files from
- the build directory by typing `make clean'. To also remove the files
- that `configure' created (so you can compile Emacs for a different
- configuration), type `make distclean'. If you don't need some, or all
- of the input methods from the Leim package, you can remove the
- unneeded files in the leim subdirectories of your site's lisp
- directory (usually /usr/local/share/emacs/VERSION/).
- MAKE VARIABLES
- You can change where the build process installs Emacs and its data
- files by specifying values for `make' variables as part of the `make'
- command line. For example, if you type
- make install bindir=/usr/local/gnubin
- the `bindir=/usr/local/gnubin' argument indicates that the Emacs
- executable files should go in `/usr/local/gnubin', not
- `/usr/local/bin'.
- Here is a complete list of the variables you may want to set.
- `bindir' indicates where to put executable programs that users can
- run. This defaults to /usr/local/bin.
- `datadir' indicates where to put the architecture-independent
- read-only data files that Emacs refers to while it runs; it
- 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 tutorials, DOC file, etc.
- `VERSION' is the number of the Emacs version you are installing,
- like `23.1' or `23.2'. Since these files vary from one version
- of Emacs to another, including the version number in the path
- allows you to have several versions of Emacs installed at the
- same time; this means that you don't have to make Emacs
- unavailable while installing a new version.
- `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.
- `VERSION' is the number of the Emacs version you are installing,
- and `CONFIGURATION-NAME' is the value deduced by the
- `configure' program to identify the architecture and operating
- system of your machine, like `i686-pc-linux-gnu' or `sparc-sun-sunos'.
- Since these files are specific to the version of Emacs,
- operating system, and architecture in use, including the
- configuration name in the path allows you to have several
- versions of Emacs for any mix of machines and operating
- systems installed at the same time; this is useful for sites
- at which different kinds of machines share the file system
- Emacs is installed on.
- `infodir' indicates where to put the info files distributed with
- Emacs; it defaults to `/usr/local/share/info'.
- `mandir' indicates where to put the man pages for Emacs and its
- utilities (like `etags'); it defaults to
- `/usr/local/share/man/man1'.
- `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',
- `sharedstatedir', `infodir', and `mandir'. Its default value is
- `/usr/local'; the other variables add on `lib' or `man' to it
- by default.
- For example, suppose your site generally places GNU software
- under `/usr/users/software/gnusoft' instead of `/usr/local'.
- By including
- `prefix=/usr/users/software/gnusoft'
- in the arguments to `make', you can instruct the build process
- to place all of the Emacs data files in the appropriate
- directories under that path.
- `exec_prefix' serves the same purpose as `prefix', but instead
- determines the default values for the architecture-dependent
- path variables - `bindir' and `libexecdir'.
- The above variables serve analogous purposes in the makefiles for all
- GNU software; the following variable is specific to Emacs.
- `archlibdir' indicates where Emacs installs and expects the executable
- files and other architecture-dependent data it uses while
- running. Its default value, based on `libexecdir' (which
- see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
- (where VERSION and CONFIGURATION-NAME are as described above).
- Remember that you must specify any variable values you need each time
- you run `make' in the top directory. If you run `make' once to build
- emacs, test it, and then run `make' again to install the files, you
- must provide the same variable settings each time. To make the
- 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/epaths.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.
- CONFIGURATION BY HAND
- This should not be necessary and is not recommended. Instead of
- running the `configure' program, you have to perform the following steps.
- 1) Copy `./src/config.in' to `./src/config.h'.
- 2) Consult `./etc/MACHINES' to see what configuration name you should
- use for your system. Look at the code of the `configure' script to
- see which operating system and architecture description files from
- `src/s' and `src/m' should be used for that configuration name. Edit
- `src/config.h', and change the two `#include' directives to include
- the appropriate system and architecture description files.
- 2) Edit `./src/config.h' to set the right options for your system. If
- you need to override any of the definitions in the s/*.h and m/*.h
- files for your system and machine, do so by editing config.h, not by
- changing the s/*.h and m/*.h files.
- 3) Create `Makefile' files in various directories from the
- corresponding `Makefile.in' files. This isn't so hard, just a matter
- of editing in appropriate substitutions for the @...@ constructs.
- The `configure' script is built from `configure.in' by the `autoconf'
- program. You need at least the version of autoconf specified in the
- AC_PREREQ(...) command to rebuild `configure' from `configure.in'.
- BUILDING GNU EMACS BY HAND
- Once Emacs is configured, running `make' in the top directory performs
- the following steps.
- 1) Run `make epaths-force' in the top directory. This produces
- `./src/epaths.h' from the template file `./src/epaths.in', changing
- the paths to the values specified in `./Makefile'.
- 2) Go to directory `./lib' and run `make'. This creates include files
- and libraries used in later steps.
- 3) Go to directory `./lib-src' and run `make'. This creates
- executables named `etags', `make-docfile', and others.
- 4) Go to directory `./src' and run `make'. This refers to files in
- the `./lisp', `./lib', and `./lib-src' subdirectories using names
- `../lisp', `../lib', and `../lib-src'.
- This creates a file `./src/emacs' which is the runnable Emacs,
- 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
- all the functions in Emacs. Each time you run make to make a new
- emacs, a new DOC file with a new name is made. You must keep the DOC
- file for an Emacs version as long as you keep using that Emacs version.
- INSTALLATION BY HAND
- 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/epaths.h'.
- Strictly speaking, not all of the executables in `./lib-src' need be copied.
- - The programs `hexl', `movemail', `profile', `rcs2log', and `vcdiff'
- are used by Emacs; they do need to be copied.
- - The programs `etags', `ctags', `emacsclient', and `rcs-checkin'
- are intended to be run by users; they are handled below.
- - The programs `make-docfile' and `test-distrib' were
- used in building Emacs, and are not needed any more.
- 2) Copy the files in `./info' to the place specified in
- `./lisp/site-init.el' or `./lisp/paths.el'. Note that if the
- destination directory already contains a file named `dir', you
- 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) 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
- of installing different versions.
- You can delete `./src/temacs'.
- 4) Copy the programs `emacsclient', `ctags', `etags', and `rcs-checkin'
- from `./lib-src' to `/usr/local/bin'. These programs are intended for
- users to run.
- 5) Copy the man pages in `./doc/man' into the appropriate man directory.
- 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 `./etc/PROBLEMS' for a list of various problems sometimes
- encountered, and what to do about them.
- This file is part of GNU Emacs.
- GNU Emacs is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- GNU Emacs is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|