Add and use minibuffer-confirm-exit-commands variable
[bpt/emacs.git] / INSTALL
CommitLineData
a0e671c7 1GNU Emacs Installation Guide
4e6835db 2Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
57ebf0be 32005, 2006, 2007, 2008 Free Software Foundation, Inc.
7f6d64f8 4See the end of the file for license conditions.
a0e671c7 5
a0e671c7 6
c8f55af5 7This file contains general information. For more specific information
b73f809c
EZ
8for the Windows, GNUstep/Mac OS X, and MS-DOS ports, also see the files
9nt/INSTALL nextstep/INSTALL, and msdos/INSTALL.
c8f55af5
GM
10
11
071fcb2c
EZ
12BASIC INSTALLATION
13
14The simplest way to build Emacs is to use the `configure' shell script
15which attempts to guess correct values for various system-dependent
16variables and features and find the directories where various system
17headers and libraries are kept. It then creates a `Makefile' in each
18subdirectory and a `config.h' file containing system-dependent
69e5e747 19definitions. Running the `make' utility then builds the package for
071fcb2c
EZ
20your system.
21
22Here's the procedure to build Emacs using `configure' on systems which
23are supported by it. If this simplified procedure fails, or if you
69e5e747 24are using a platform such as MS-Windows, where `configure' script
071fcb2c
EZ
25doesn't work, you might need to use various non-default options, and
26maybe perform some of the steps manually. The more detailed
27description in the rest of the sections of this guide will help you do
28that, so please refer to them if the simple procedure does not work.
29
077bea6c 30 1. Make sure your system has at least 120 MB of free disk space.
071fcb2c 31
077bea6c 32 2a. `cd' to the directory where you unpacked Emacs and invoke the
071fcb2c
EZ
33 `configure' script:
34
35 ./configure
36
077bea6c 37 2b. Alternatively, create a separate directory, outside the source
071fcb2c
EZ
38 directory, where you want to build Emacs, and invoke `configure'
39 from there:
40
41 SOURCE-DIR/configure
42
4e98f5a6
DL
43 where SOURCE-DIR is the top-level Emacs source directory. This
44 may not work unless you use GNU make.
071fcb2c 45
077bea6c 46 3. When `configure' finishes, it prints several lines of details
071fcb2c
EZ
47 about the system configuration. Read those details carefully
48 looking for anything suspicious, such as wrong CPU and operating
49 system names, wrong places for headers or libraries, missing
50 libraries that you know are installed on your system, etc.
51
52 If you find anything wrong, you will have to pass to `configure'
53 explicit machine configuration name, and one or more options
54 which tell it where to find various headers and libraries; refer
55 to DETAILED BUILDING AND INSTALLATION section below.
56
57 If `configure' didn't find some image support libraries, such as
4e98f5a6
DL
58 Xpm, jpeg, etc., and you want to use them refer to the subsection
59 "Image support libraries", below.
071fcb2c
EZ
60
61 If the details printed by `configure' don't make any sense to
62 you, assume that `configure' did its job and proceed.
63
077bea6c 64 4. If you need to run the `configure' script more than once (e.g.,
071fcb2c
EZ
65 with some non-default options), always clean the source
66 directories before running `configure' again:
67
177c0ea7 68 make distclean
071fcb2c
EZ
69 ./configure
70
077bea6c 71 5. Invoke the `make' program:
071fcb2c
EZ
72
73 make
74
077bea6c 75 6. If `make' succeeds, it will build an executable program `emacs'
69e5e747
EZ
76 in the `src' directory. You can try this program, to make sure
77 it works:
071fcb2c
EZ
78
79 src/emacs -q
80
077bea6c 81 7. Assuming that the program `src/emacs' starts and displays its
071fcb2c
EZ
82 opening screen, you can install the program and its auxiliary
83 files into their installation directories:
84
85 make install
86
87 You are now ready to use Emacs. If you wish to conserve disk space,
88 you may remove the program binaries and object files from the
89 directory where you built Emacs:
90
91 make clean
92
4e98f5a6
DL
93 You can also save some space by compressing (with `gzip') Info files
94 and installed Lisp source (.el) files which have corresponding .elc
95 versions.
96
a0e671c7 97
85da25e9
RS
98ADDITIONAL DISTRIBUTION FILES
99
85da25e9
RS
100* intlfonts-VERSION.tar.gz
101
e4dd707c
DL
102The intlfonts distribution contains X11 fonts in various encodings
103that Emacs can use to display international characters. If you see a
104non-ASCII character appear as a hollow box, that means you don't have
105a font for it. You might find one in the intlfonts distribution. If
106you do have a font for a non-ASCII character, but some characters
107don't look right, or appear improperly aligned, a font from the
108intlfonts distribution might look better.
887af595 109
1d173668
EZ
110The fonts in the intlfonts distribution are also used by the ps-print
111package for printing international characters. The file
071fcb2c 112lisp/ps-mule.el defines the *.bdf font files required for printing
1d173668
EZ
113each character set.
114
887af595
RS
115The intlfonts distribution contains its own installation instructions,
116in the intlfonts/README file.
85da25e9 117
45e680a8
EZ
118* Image support libraries
119
120Emacs needs optional libraries to be able to display images (with the
071fcb2c
EZ
121exception of PBM and XBM images whose support is built-in).
122
123On some systems, particularly on GNU/Linux, these libraries may
d38796cb 124already be present or available as additional packages. Note that if
df9b0d0a
DL
125there is a separate `dev' or `devel' package, for use at compilation
126time rather than run time, you will need that as well as the
127corresponding run time package; typically the dev package will
128contain header files and a library archive. Otherwise, you can
129download and build libraries from sources. None of them are vital for
130running Emacs; however, note that Emacs will not be able to use
131colored icons in the toolbar if XPM support is not compiled in.
9792d8ac 132
071fcb2c
EZ
133Here's the list of these optional libraries, and the URLs where they
134can be found:
45e680a8 135
177c0ea7 136 . libXaw3d for fancy 3D-style
071fcb2c 137 scroll bars: ftp://ftp.x.org/contrib/widgets/Xaw3d/
45e680a8 138 . libxpm for XPM: ftp://ftp.x.org/contrib/libraries/
177c0ea7 139 Get version 3.4k or later, which lets Emacs
0c9d62f6 140 use its own color allocation functions.
1ab1d7c4
R
141 . libpng for PNG: ftp://ftp.simplesystems.org/pub/libpng/png/
142 . libz (for PNG): http://www.zlib.net/
45e680a8 143 . libjpeg for JPEG: ftp://ftp.uu.net/graphics/jpeg/
4756109e
DL
144 Get version 6b -- 6a is reported to fail in
145 Emacs.
45e680a8 146 . libtiff for TIFF: http://www.libtiff.org/
5e0699b4 147 . libgif for GIF: http://sourceforge.net/projects/giflib/
ec6bd013 148
071fcb2c
EZ
149Emacs will configure itself to build with these libraries if the
150`configure' script finds them on your system, unless you supply the
151appropriate --without-LIB option. In some cases, older versions of
152these libraries won't work because some routines are missing, and
153configure should avoid such old versions. If that happens, use the
154--without-LIB options to `configure'. See below for more details.
45e680a8 155
76b071b1
KH
156* Complex Text Layout support libraries
157
158Emacs needs the optional libraries "m17n-db", "libm17n-flt", "libotf"
7d1d1c16
GM
159to correctly display such complex scripts as Indic and Khmer.
160On some systems, particularly GNU/Linux, these libraries may be
161already present or available as additional packages. Note that if
162there is a separate `dev' or `devel' package, for use at compilation
163time rather than run time, you will need that as well as the
164corresponding run time package; typically the dev package will contain
165header files and a library archive. Otherwise, you can download and
166build libraries from sources.
76b071b1 167
7d1d1c16 168The sources of these libraries are available by anonymous CVS from
76b071b1
KH
169cvs.m17n.org.
170
171 % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n login
172 % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co m17n-db
173 % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co m17n-lib
174 % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/m17n co libotf
175
7d1d1c16
GM
176For m17n-lib, if you have problems with making the whole package
177because you lack some other packages on which m17n-lib depends, try to
178configure it with the option "--without-gui".
76b071b1 179
4756109e
DL
180* Extra fonts
181
310411db
EZ
182The Emacs distribution does not include fonts and does not install
183them. You must do that yourself.
47774164 184
5b6fd9ea
KH
185Emacs running on the GNU system supports both X fonts and local fonts
186(i.e. the fonts managed by the fontconfig library).
187
188For `Unicode' (ISO 10646) X fonts, see
1ab1d7c4 189<URL:http://czyborra.com/unifont/> (packaged in Debian),
e4dd707c
DL
190<URL:http://openlab.ring.gr.jp/efont/> (packaged in Debian). (In
191recent Debian versions, there is an extensive `misc-fixed' iso10646-1
192in the default X installation.) Perhaps also see
4756109e 193<URL:http://www.cl.cam.ac.uk/%7Emgk25/ucs-fonts.html>.
e4dd707c 194
4756109e
DL
195<URL:http://czyborra.com/charsets/> has basic fonts for Emacs's
196ISO-8859 charsets.
197
1ab1d7c4 198XFree86 release 4 (from <URL:ftp://ftp.xfree86.org/pub/XFree86/> and mirrors)
4756109e 199contains font support for most, if not all, of the charsets that Emacs
e4dd707c
DL
200currently supports, including iso10646-1 encoded fonts for use with
201the mule-unicode charsets. The font files should also be usable with
202older X releases. Note that XFree 4 contains many iso10646-1 fonts
203with minimal character repertoires, which can cause problems -- see
204etc/PROBLEMS.
4756109e 205
f0978a76
EZ
206BDF Unicode fonts etl-unicode.tar.gz are available from
207<URL:ftp://ftp.x.org/contrib/fonts/> and
208<URL:ftp://ftp.xfree86.org/pub/mirror/X.Org/contrib/fonts/>. These
209fonts can also be used by ps-print and ps-mule to print Unicode
210characters.
287e56d1 211
310411db
EZ
212Finally, the Web pages <URL:http://www.nongnu.org/freefont/index.html>
213and <URL:http://www.nongnu.org/freefont/resources.html> list a large
214number of free Unicode fonts.
215
5b31a763
KG
216* GNU/Linux development packages
217
218Many GNU/Linux systems do not come with development packages by
219default; they just include the files that you need to run Emacs, but
220not those you need to compile it. For example, to compile Emacs with
221X11 support, you may need to install the special `X11 development'
6740b4d6 222package. For example, in April 2003, the package names to install
a7da3bc5 223were `XFree86-devel' and `Xaw3d-devel' on Red Hat. On Debian, the
e4dd707c
DL
224packages necessary to build the installed version should be
225sufficient; they can be installed using `apt-get build-dep emacs21' in
226Debian 3 and above.
45e680a8 227
6aaf2a72 228
071fcb2c 229DETAILED BUILDING AND INSTALLATION:
85da25e9 230
071fcb2c 231(This is for a Unix or Unix-like system. For MS-DOS and Windows 3.X,
b73f809c
EZ
232see msdos/INSTALL. For Windows 9X, Windows ME, Windows NT, Windows
2332000, Windows XP/2003, and Windows Vista/2008, see the file
3dcdb6ea 234nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.)
a0e671c7
JB
235
2361) Make sure your system has enough swapping space allocated to handle
f1d6d1e8 237a program whose pure code is 1.5 MB and whose data area is at
4df45701 238least 2.8 MB and can reach 100 MB or more. If the swapping space is
a0e671c7 239insufficient, you will get an error in the command `temacs -batch -l
bde335e3 240loadup dump', found in `./src/Makefile.in', or possibly when
42db5687 241running the final dumped Emacs.
177c0ea7 242
4df45701
EZ
243Building Emacs requires about 140 MB of disk space (including the
244Emacs sources) Once installed, Emacs occupies about 77 MB in the file
077bea6c
EZ
245system where it is installed; this includes the executable files, Lisp
246libraries, miscellaneous data files, and on-line documentation. If
247the building and installation take place in different directories,
4df45701 248then the installation procedure momentarily requires 140+77 MB.
a0e671c7
JB
249
2502) Consult `./etc/MACHINES' to see what configuration name you should
f40423fa 251give to the `configure' program. That file offers hints for
071fcb2c
EZ
252getting around some possible installation problems. The file lists
253many different configurations, but only the part for your machine and
254operating system is relevant. (The list is arranged in alphabetical
255order by the vendor name.)
a0e671c7 256
ea3165c7
RS
2573) You can build Emacs in the top-level Emacs source directory
258or in a separate directory.
259
2603a) To build in the top-level Emacs source directory, go to that
261directory and run the program `configure' as follows:
a0e671c7 262
e4e772f1 263 ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ...
a0e671c7
JB
264
265The CONFIGURATION-NAME argument should be a configuration name given
e4e772f1
RS
266in `./etc/MACHINES', with the system version number added at the end.
267
268You should try first omitting CONFIGURATION-NAME. This way,
269`configure' will try to guess your system type. If it cannot guess,
270or if something goes wrong in building or installing Emacs this way,
271try again specifying the proper CONFIGURATION-NAME explicitly.
a0e671c7 272
f40423fa
DM
273If you don't want X support, specify `--with-x=no'. If you omit this
274option, `configure' will try to figure out for itself whether your
275system has X, and arrange to use it if present.
a0e671c7
JB
276
277The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
278process where the compiler should look for the include files and
f40423fa
DM
279object libraries used with the X Window System. Normally, `configure'
280is able to find them; these options are necessary if you have your X
763b1847
KH
281Window System files installed in unusual places. These options also
282accept a list of directories, separated with colons.
a0e671c7 283
f40423fa
DM
284To get more attractive menus, you can specify an X toolkit when you
285configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
cf5ebec7
RS
286TOOLKIT is `athena', `motif' or `gtk' (`yes' and `lucid' are synonyms
287for `athena'). On some systems, it does not work to use a toolkit
288with shared libraries. A free implementation of Motif, called
289LessTif, is available from <http://www.lesstif.org>. Compiling with
290LessTif or Motif causes a standard File Selection Dialog to pop up
291when you invoke file commands with the mouse. You can get fancy
2923D-style scroll bars, even without LessTif/Motif, if you have the
293Xaw3d library installed (see "Image support libraries" above for Xaw3d
071fcb2c 294availability).
a0e671c7 295
488dd4c4
JD
296If `--with-x-toolkit=gtk' is specified, you can tell configure where
297to search for GTK by specifying `--with-pkg-config-prog=PATH' where
1dafafa3 298PATH is the pathname to pkg-config. Note that GTK version 2.4 or
488dd4c4
JD
299newer is required for Emacs.
300
e10f2277
EZ
301The Emacs mail reader RMAIL is configured to be able to read mail from
302a POP3 server by default. Versions of the POP protocol older than
303POP3 are not supported. For Kerberos-authenticated POP add
304`--with-kerberos', for Hesiod support add `--with-hesiod'. While POP3
305is always enabled, whether Emacs actually uses POP is controlled by
306individual users--see the Rmail chapter of the Emacs manual.
c5f329d6 307
9792d8ac
DL
308For image support you may have to download, build, and install the
309appropriate image support libraries for image types other than XBM and
310PBM, see the list of URLs in "ADDITIONAL DISTRIBUTION FILES" above.
311(Note that PNG support requires libz in addition to libpng.)
45e680a8 312
9792d8ac
DL
313To disable individual types of image support in Emacs for some reason,
314even though configure finds the libraries, you can configure with one
315or more of these options:
45e680a8 316
9792d8ac
DL
317 --without-xpm for XPM image support
318 --without-jpeg for JPEG image support
319 --without-tiff for TIFF image support
320 --without-gif for GIF image support
321 --without-png for PNG image support
45e680a8 322
071fcb2c 323Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d
5efc493c 324scroll bars.
49f601d9
KS
325
326Use --without-xim to inhibit the default use of X Input Methods. In
327this case, the X resource useXIM can be used to turn on use of XIM.
328
329Use --disable-largefile omits support for files larger than 2GB on
5efc493c 330systems which support that.
49f601d9
KS
331
332Use --without-sound to disable sound support.
071fcb2c 333
a0e671c7
JB
334The `--prefix=PREFIXDIR' option specifies where the installation process
335should put emacs and its data files. This defaults to `/usr/local'.
336- Emacs (and the other utilities users run) go in PREFIXDIR/bin
337 (unless the `--exec-prefix' option says otherwise).
f40423fa
DM
338- The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
339 (where VERSION is the version number of Emacs, like `19.27').
a0e671c7 340- The architecture-dependent files go in
f40423fa 341 PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
a0e671c7
JB
342 (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2),
343 unless the `--exec-prefix' option says otherwise.
344
345The `--exec-prefix=EXECDIR' option allows you to specify a separate
346portion of the directory tree for installing architecture-specific
347files, like executables and utility programs. If specified,
348- Emacs (and the other utilities users run) go in EXECDIR/bin, and
349- The architecture-dependent files go in
f40423fa 350 EXECDIR/libexec/emacs/VERSION/CONFIGURATION.
a0e671c7
JB
351EXECDIR/bin should be a directory that is normally in users' PATHs.
352
353For example, the command
354
355 ./configure mips-dec-ultrix --with-x11
356
357configures Emacs to build for a DECstation running Ultrix, with
358support for the X11 window system.
359
f40423fa 360`configure' doesn't do any compilation or installation
a0e671c7 361itself. It just creates the files that influence those things:
908477d9
DM
362`./Makefile', `lib-src/Makefile', `oldXMenu/Makefile',
363`lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details
364on exactly what it does, see the section called `CONFIGURATION BY
365HAND', below.
a0e671c7
JB
366
367When it is done, `configure' prints a description of what it did and
f40423fa
DM
368creates a shell script `config.status' which, when run, recreates the
369same configuration. If `configure' exits with an error after
370disturbing the status quo, it removes `config.status'. `configure'
371also creates a file `config.cache' that saves the results of its tests
372to make reconfiguring faster, and a file `config.log' containing compiler
373output (useful mainly for debugging `configure'). You can give
374`configure' the option `--cache-file=FILE' to use the results of the
375tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
376disable caching, for debugging `configure'.
a0e671c7 377
071fcb2c 378If the description of the system configuration printed by `configure'
a7da3bc5 379is not right, or if it claims some of the features or libraries are not
071fcb2c
EZ
380available when you know they are, look at the `config.log' file for
381the trace of the failed tests performed by `configure' to check
382whether these features are supported. Typically, some test fails
383because the compiler cannot find some function in the system
384libraries, or some macro-processor definition in the system headers.
385
386Some tests might fail because the compiler should look in special
387directories for some header files, or link against optional
8416aa4e 388libraries, or use special compilation options. You can force
071fcb2c 389`configure' and the build process which follows it to do that by
5efc493c
JB
390setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC
391before running `configure'. CPP is the command which invokes the
30d624f6
GM
392preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are
393compilation options, LDFLAGS are options used when linking, LIBS are
394libraries to link against, and CC is the command which invokes the
ebd377fb 395compiler. By default, gcc is used if available.
071fcb2c 396
4e98f5a6
DL
397Here's an example of a `configure' invocation, assuming a Bourne-like
398shell such as Bash, which uses these variables:
071fcb2c
EZ
399
400 CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
401 CFLAGS='-O3' LIBS='-lfoo -lbar' ./configure
402
403(this is all one long line). This tells `configure' to instruct the
404preprocessor to look in the `/foo/myinclude' directory for header
405files (in addition to the standard directories), instruct the linker
406to look in `/bar/mylib' for libraries, pass the -O3 optimization
407switch to the compiler, and link against libfoo.a and libbar.a
408libraries in addition to the standard ones.
409
5efc493c
JB
410For some libraries, like Gtk+, fontconfig and ALSA, `configure' use
411pkg-config to find where those libraries are installed.
412If you want pkg-config to look in special directories, you have to set
413the environment variable PKG_CONFIG_PATH to point to the directories
1f29c85c
JD
414where the .pc-files for those libraries are.
415For example:
416
417 PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig' \
418 ./configure
419
a0e671c7 420The work of `configure' can be done by editing various files in the
ea3165c7
RS
421distribution, but using `configure' is easier. See the section called
422"CONFIGURATION BY HAND" below if you want to do the configuration
423yourself.
424
4253b) To build in a separate directory, go to that directory
426and run the program `configure' as follows:
427
428 SOURCE-DIR/configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
429
430SOURCE-DIR refers to the top-level Emacs source directory which is
431where Emacs's configure script is located. `configure' looks for the
432Emacs source code in the directory that `configure' is in.
433
434To build in a separate directory, you must use a version of `make'
435that supports the `VPATH' variable, such as GNU `make'.
a0e671c7 436
793faff1
RS
4373c) Some people try to build in a separate directory by filling
438it full of symlinks to the files in the real source directory.
e1655e2b
RS
439If you do that, `make all' does work, but `make install' fails:
440it copies the symbolic links rather than the actual files.
441
442As far as is known, there is no particular reason to use
443a directory full of links rather than use the standard GNU
444facilities to build in a separate directory (see 3b above).
445
a0e671c7 4464) Look at `./lisp/paths.el'; if some of those values are not right
0b60f47d
KH
447for your system, set up the file `./lisp/site-init.el' with Emacs
448Lisp code to override them; it is not a good idea to edit paths.el
a0e671c7
JB
449itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES,
450rather than `defvar', as used by `./lisp/paths.el'. For example,
451
452 (setq news-inews-program "/usr/bin/inews")
453
454is how you would override the default value of the variable
455news-inews-program (which is "/usr/local/inews").
456
35b12ec0
RS
457Before you override a variable this way, *look at the value* that the
458variable gets by default! Make sure you know what kind of value the
459variable should have. If you don't pay attention to what you are
460doing, you'll make a mistake.
461
42db5687
RS
4625) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
463Lisp code you want Emacs to load before it is dumped out. Use
464site-load.el for additional libraries if you arrange for their
465documentation strings to be in the etc/DOC file (see
bde335e3 466src/Makefile.in if you wish to figure out how to do that). For all
8c10f3e4
RS
467else, use site-init.el. Do not load byte-compiled code which
468was build with a non-nil value of `byte-compile-dynamic'.
a0e671c7 469
0d75540d
RS
470If you set load-path to a different value in site-init.el or
471site-load.el, Emacs will use *precisely* that value when it starts up
472again. If you do this, you are on your own!
d07ee75a 473
a0e671c7
JB
474Note that, on some systems, the code you place in site-init.el must
475not use expand-file-name or any other function which may look
476something up in the system's password and user information database.
4fece393 477See `./etc/PROBLEMS' for more details on which systems this affects.
a0e671c7 478
eaa91904
RS
479The `site-*.el' files are nonexistent in the distribution. You do not
480need to create them if you have nothing to put in them.
a0e671c7
JB
481
4826) Refer to the file `./etc/TERMS' for information on fields you may
483wish to add to various termcap entries. The files `./etc/termcap.ucb'
484and `./etc/termcap.dat' may already contain appropriately-modified
485entries.
486
4877) Run `make' in the top directory of the Emacs distribution to finish
c5f48ce3
RS
488building Emacs in the standard way. The final executable file is
489named `src/emacs'. You can execute this file "in place" without
490copying it, if you wish; then it automatically uses the sibling
491directories ../lisp, ../lib-src, ../info.
492
493Or you can "install" the executable and the other Emacs into their
494installed locations, with `make install'. By default, Emacs's files
495are installed in the following directories:
a0e671c7
JB
496
497`/usr/local/bin' holds the executable programs users normally run -
c9da8016
RS
498 `emacs', `etags', `ctags', `b2m', `emacsclient',
499 and `rcs-checkin'.
a0e671c7 500
f40423fa 501`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
a0e671c7 502 `VERSION' stands for the number of the Emacs version
f40423fa 503 you are installing, like `18.59' or `19.27'. Since the
cdb49480 504 Lisp library changes from one version of Emacs to
a0e671c7
JB
505 another, including the version number in the path
506 allows you to have several versions of Emacs installed
cdb49480
RS
507 at the same time; in particular, you don't have to
508 make Emacs unavailable while installing a new version.
a0e671c7 509
f40423fa 510`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
a0e671c7
JB
511 file, the `yow' database, and other
512 architecture-independent files Emacs might need while
513 running. VERSION is as specified for `.../lisp'.
514
f40423fa 515`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
a0e671c7
JB
516 programs used by Emacs that users are not expected to
517 run themselves.
518 `VERSION' is the number of the Emacs version you are
519 installing, and `CONFIGURATION-NAME' is the argument
520 you gave to the `configure' program to identify the
521 architecture and operating system of your machine,
522 like `mips-dec-ultrix' or `sparc-sun-sunos'. Since
523 these files are specific to the version of Emacs,
524 operating system, and architecture in use, including
525 the configuration name in the path allows you to have
526 several versions of Emacs for any mix of machines and
527 operating systems installed at the same time; this is
528 useful for sites at which different kinds of machines
529 share the file system Emacs is installed on.
530
1f6d58b9
CY
531`/usr/local/share/info' holds the on-line documentation for Emacs,
532 known as "info files". Many other GNU programs are
533 documented using info files as well, so this directory
534 stands apart from the other, Emacs-specific
535 directories.
a0e671c7
JB
536
537`/usr/local/man/man1' holds the man pages for the programs installed
538 in `/usr/local/bin'.
539
795b558b
RS
540Any version of Emacs, whether installed or not, also looks for Lisp
541files in these directories.
542
543`/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
544 files installed for Emacs version VERSION only.
545
546`/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
547 files installed for all Emacs versions.
548
549 When Emacs is installed, it searches for its Lisp files
550 in `/usr/local/share/emacs/VERSION/site-lisp', then in
551 `/usr/local/share/emacs/site-lisp', and finally in
552 `/usr/local/share/emacs/VERSION/lisp'.
553
a0e671c7
JB
554If these directories are not what you want, you can specify where to
555install Emacs's libraries and data files or where Emacs should search
cdb49480 556for its Lisp files by giving values for `make' variables as part of
a0e671c7
JB
557the command. See the section below called `MAKE VARIABLES' for more
558information on this.
559
5608) Check the file `dir' in your site's info directory (usually
1f6d58b9
CY
561/usr/local/share/info) to make sure that it has a menu entry for the
562Emacs info files.
a0e671c7 563
42db5687 5649) If your system uses lock files to interlock access to mailer inbox files,
f40423fa 565then you might need to make the movemail program setuid or setgid
42db5687
RS
566to enable it to write the lock files. We believe this is safe.
567
2d475b5f
KH
56810) You are done! You can remove executables and object files from
569the build directory by typing `make clean'. To also remove the files
570that `configure' created (so you can compile Emacs for a different
f12b4dea
EZ
571configuration), type `make distclean'. If you don't need some, or all
572of the input methods from the Leim package, you can remove the
3adec967
RS
573unneeded files in the leim subdirectories of your site's lisp
574directory (usually /usr/local/share/emacs/VERSION/).
2d475b5f 575
a0e671c7
JB
576
577
578MAKE VARIABLES
579
580You can change where the build process installs Emacs and its data
581files by specifying values for `make' variables as part of the `make'
582command line. For example, if you type
583
584 make install bindir=/usr/local/gnubin
585
586the `bindir=/usr/local/gnubin' argument indicates that the Emacs
587executable files should go in `/usr/local/gnubin', not
588`/usr/local/bin'.
589
590Here is a complete list of the variables you may want to set.
591
592`bindir' indicates where to put executable programs that users can
593 run. This defaults to /usr/local/bin.
594
595`datadir' indicates where to put the architecture-independent
596 read-only data files that Emacs refers to while it runs; it
908477d9 597 defaults to /usr/local/share. We create the following
a0e671c7 598 subdirectories under `datadir':
cdb49480 599 - `emacs/VERSION/lisp', containing the Emacs Lisp library, and
a0e671c7
JB
600 - `emacs/VERSION/etc', containing the Emacs tutorial, the DOC
601 file, and the `yow' database.
602 `VERSION' is the number of the Emacs version you are installing,
603 like `18.59' or `19.0'. Since these files vary from one version
604 of Emacs to another, including the version number in the path
605 allows you to have several versions of Emacs installed at the
606 same time; this means that you don't have to make Emacs
607 unavailable while installing a new version.
608
908477d9
DM
609`libexecdir' indicates where to put architecture-specific data files that
610 Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
611 We create the following subdirectories under `libexecdir':
a0e671c7
JB
612 - `emacs/VERSION/CONFIGURATION-NAME', containing executable
613 programs used by Emacs that users are not expected to run
177c0ea7 614 themselves.
a0e671c7
JB
615 `VERSION' is the number of the Emacs version you are installing,
616 and `CONFIGURATION-NAME' is the argument you gave to the
617 `configure' program to identify the architecture and operating
618 system of your machine, like `mips-dec-ultrix' or
619 `sparc-sun-sunos'. Since these files are specific to the version
620 of Emacs, operating system, and architecture in use, including
621 the configuration name in the path allows you to have several
622 versions of Emacs for any mix of machines and operating systems
623 installed at the same time; this is useful for sites at which
624 different kinds of machines share the file system Emacs is
625 installed on.
626
627`infodir' indicates where to put the info files distributed with
1f6d58b9 628 Emacs; it defaults to `/usr/local/share/info'.
a0e671c7
JB
629
630`mandir' indicates where to put the man pages for Emacs and its
631 utilities (like `etags'); it defaults to
632 `/usr/local/man/man1'.
633
634`manext' gives the extension the man pages should be installed with.
635 It should contain a period, followed by the appropriate
636 digit. It defaults to `.1'. For example given the default
637 values for `mandir' and `manext', the Emacs man page would be
638 installed as `/usr/local/man/man1/emacs.1'.
639
640`prefix' doesn't give a path for any specific part of Emacs; instead,
641 its value is used to determine the defaults for all the
642 architecture-independent path variables - `datadir',
908477d9 643 `sharedstatedir', `infodir', and `mandir'. Its default value is
a0e671c7
JB
644 `/usr/local'; the other variables add on `lib' or `man' to it
645 by default.
646
647 For example, suppose your site generally places GNU software
648 under `/usr/users/software/gnusoft' instead of `/usr/local'.
649 By including
650 `prefix=/usr/users/software/gnusoft'
651 in the arguments to `make', you can instruct the build process
652 to place all of the Emacs data files in the appropriate
653 directories under that path.
654
655`exec_prefix' serves the same purpose as `prefix', but instead
656 determines the default values for the architecture-dependent
908477d9 657 path variables - `bindir' and `libexecdir'.
a0e671c7
JB
658
659The above variables serve analogous purposes in the makefiles for all
5c462624 660GNU software; this variable is specific to Emacs.
a0e671c7 661
2d475b5f
KH
662`archlibdir' indicates where Emacs installs and expects the executable
663 files and other architecture-dependent data it uses while
664 running. Its default value, based on `libexecdir' (which
665 see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
a0e671c7
JB
666 (where VERSION and CONFIGURATION-NAME are as described above).
667
668Remember that you must specify any variable values you need each time
669you run `make' in the top directory. If you run `make' once to build
670emacs, test it, and then run `make' again to install the files, you
671must provide the same variable settings each time. To make the
672settings persist, you can edit them into the `Makefile' in the top
673directory, but be aware that running the `configure' program erases
674`Makefile' and rebuilds it from `Makefile.in'.
675
5c462624
RS
676The path for finding Lisp files is specified in src/paths.h,
677a file which is generated by running configure. To change the path,
678you can edit the definition of PATH_LOADSEARCH in that file
679before you run `make'.
680
a0e671c7
JB
681The top-level Makefile stores the variable settings it used in the
682Makefiles for the subdirectories, so you don't have to specify them
683when running make in the subdirectories.
684
685
686CONFIGURATION BY HAND
687
c9da8016
RS
688Instead of running the `configure' program, you have to perform the
689following steps.
a0e671c7 690
bde335e3 6911) Copy `./src/config.in' to `./src/config.h'.
a0e671c7
JB
692
6932) Consult `./etc/MACHINES' to see what configuration name you should
694use for your system. Look at the code of the `configure' script to
695see which operating system and architecture description files from
696`src/s' and `src/m' should be used for that configuration name. Edit
697`src/config.h', and change the two `#include' directives to include
698the appropriate system and architecture description files.
699
7002) Edit `./src/config.h' to set the right options for your system. If
701you need to override any of the definitions in the s/*.h and m/*.h
702files for your system and machine, do so by editing config.h, not by
703changing the s/*.h and m/*.h files. Occasionally you may need to
704redefine parameters used in `./lib-src/movemail.c'.
705
c9da8016 7063) Create src/Makefile and lib-src/Makefile from the corresponding
bde335e3 707`Makefile.in' files. First copy `Makefile.in' to `Makefile.c',
94684a2e 708then edit in appropriate substitutions for the @...@ constructs,
c9da8016
RS
709and then copy the shell commands near the end of `configure'
710that run cpp to construct `Makefile'.
a0e671c7 711
c9da8016
RS
7124) Create `Makefile' files in various other directories
713from the corresponding `Makefile.in' files. This isn't so hard,
714just a matter of substitution.
a0e671c7 715
a0e671c7 716The `configure' script is built from `configure.in' by the `autoconf'
91074c04 717program. You need version 2.51 or newer of `autoconf' to rebuild
f42e6f81 718`configure'.
a0e671c7
JB
719
720BUILDING GNU EMACS BY HAND
721
a4af02f3
RS
722Once Emacs is configured, running `make' in the top directory performs
723the following steps.
a0e671c7
JB
724
7251) Run `make src/paths.h' in the top directory. This produces
bde335e3 726`./src/paths.h' from the template file `./src/paths.in', changing
a0e671c7
JB
727the paths to the values specified in `./Makefile'.
728
c9da8016 7292) Go to directory `./lib-src' and run `make'. This creates
a7da3bc5
GM
730executables named `ctags' and `etags' and `make-docfile' and
731`digest-doc' and `test-distrib'. And others.
a0e671c7 732
c9da8016
RS
7333) Go to directory `./src' and Run `make'. This refers to files in
734the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
a0e671c7
JB
735`../lib-src'.
736
737This creates a file `./src/emacs' which is the runnable Emacs,
c9da8016
RS
738which has another name that contains a version number.
739Each time you do this, that version number increments in the last place.
a0e671c7
JB
740
741It also creates a file in `./etc' whose name is `DOC' followed by the
742current Emacs version. This file contains documentation strings for
743all the functions in Emacs. Each time you run make to make a new
744emacs, a new DOC file with a new name is made. You must keep the DOC
745file for an Emacs version as long as you keep using that Emacs
746version.
747
748
749INSTALLATION BY HAND
750
a4af02f3
RS
751The steps below are done by running `make install' in the main
752directory of the Emacs distribution.
a0e671c7
JB
753
7541) Copy `./lisp' and its subdirectories, `./etc', and the executables
755in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
756
757Strictly speaking, not all of the executables in `./lib-src' need be copied.
4208da83 758- The programs `cvtmail', `fakemail', `hexl',
a7da3bc5
GM
759 `movemail', `profile', `rcs2log', and `vcdiff' are used by Emacs;
760 they do need to be copied.
c9da8016 761- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
a0e671c7 762 are intended to be run by users; they are handled below.
3ae888e8 763- The programs `make-docfile' and `test-distrib' were
a0e671c7
JB
764 used in building Emacs, and are not needed any more.
765- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into
766 a file for users to read. There is no important reason to move them.
767
7682) Copy the files in `./info' to the place specified in
769`./lisp/site-init.el' or `./lisp/paths.el'. Note that if the
770destination directory already contains a file named `dir', you
771probably don't want to replace it with the `dir' file in the Emacs
772distribution. Instead, you should make sure that the existing `dir'
773file contains an appropriate menu entry for the Emacs info.
774
100b770b 7753) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
a0e671c7
JB
776in users' search paths. `./src/emacs' has an alternate name
777`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
778`/usr/local/bin/emacs' pointing to that alternate name, as an easy way
779of installing different versions.
780
781You can delete `./src/temacs'.
782
100b770b 7834) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
c9da8016 784`rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are
a0e671c7
JB
785intended for users to run.
786
100b770b 7875) Copy the man pages in `./etc' for emacs, ctags, and etags into the
a0e671c7
JB
788appropriate man directories.
789
100b770b 7906) The files in the `./src' subdirectory, except for `emacs', are not
c9da8016
RS
791used by Emacs once it is built. However, it is very desirable to keep
792the source on line for debugging.
a0e671c7
JB
793
794
795PROBLEMS
796
4fece393 797See the file PROBLEMS in etc subdirectory for a list of various
a0e671c7 798problems sometimes encountered, and what to do about them.
e2b6e5ea 799\f
7f6d64f8
GM
800This file is part of GNU Emacs.
801
b33ba812 802GNU Emacs is free software: you can redistribute it and/or modify
7f6d64f8 803it under the terms of the GNU General Public License as published by
b33ba812
GM
804the Free Software Foundation, either version 3 of the License, or
805(at your option) any later version.
7f6d64f8
GM
806
807GNU Emacs is distributed in the hope that it will be useful,
808but WITHOUT ANY WARRANTY; without even the implied warranty of
809MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
810GNU General Public License for more details.
811
812You should have received a copy of the GNU General Public License
b33ba812 813along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.