*** empty log message ***
[bpt/emacs.git] / INSTALL
CommitLineData
a0e671c7 1GNU Emacs Installation Guide
667f78d7
R
2Copyright (c) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2006
3Free software Foundation, Inc.
e2b6e5ea 4See the end of the file for copying permissions.
a0e671c7 5
a0e671c7 6
071fcb2c
EZ
7BASIC INSTALLATION
8
9The simplest way to build Emacs is to use the `configure' shell script
10which attempts to guess correct values for various system-dependent
11variables and features and find the directories where various system
12headers and libraries are kept. It then creates a `Makefile' in each
13subdirectory and a `config.h' file containing system-dependent
69e5e747 14definitions. Running the `make' utility then builds the package for
071fcb2c
EZ
15your system.
16
17Here's the procedure to build Emacs using `configure' on systems which
18are supported by it. If this simplified procedure fails, or if you
69e5e747 19are using a platform such as MS-Windows, where `configure' script
071fcb2c
EZ
20doesn't work, you might need to use various non-default options, and
21maybe perform some of the steps manually. The more detailed
22description in the rest of the sections of this guide will help you do
23that, so please refer to them if the simple procedure does not work.
24
077bea6c 25 1. Make sure your system has at least 120 MB of free disk space.
071fcb2c 26
077bea6c 27 2a. `cd' to the directory where you unpacked Emacs and invoke the
071fcb2c
EZ
28 `configure' script:
29
30 ./configure
31
077bea6c 32 2b. Alternatively, create a separate directory, outside the source
071fcb2c
EZ
33 directory, where you want to build Emacs, and invoke `configure'
34 from there:
35
36 SOURCE-DIR/configure
37
4e98f5a6
DL
38 where SOURCE-DIR is the top-level Emacs source directory. This
39 may not work unless you use GNU make.
071fcb2c 40
077bea6c 41 3. When `configure' finishes, it prints several lines of details
071fcb2c
EZ
42 about the system configuration. Read those details carefully
43 looking for anything suspicious, such as wrong CPU and operating
44 system names, wrong places for headers or libraries, missing
45 libraries that you know are installed on your system, etc.
46
47 If you find anything wrong, you will have to pass to `configure'
48 explicit machine configuration name, and one or more options
49 which tell it where to find various headers and libraries; refer
50 to DETAILED BUILDING AND INSTALLATION section below.
51
52 If `configure' didn't find some image support libraries, such as
4e98f5a6
DL
53 Xpm, jpeg, etc., and you want to use them refer to the subsection
54 "Image support libraries", below.
071fcb2c
EZ
55
56 If the details printed by `configure' don't make any sense to
57 you, assume that `configure' did its job and proceed.
58
077bea6c 59 4. If you need to run the `configure' script more than once (e.g.,
071fcb2c
EZ
60 with some non-default options), always clean the source
61 directories before running `configure' again:
62
177c0ea7 63 make distclean
071fcb2c
EZ
64 ./configure
65
077bea6c 66 5. Invoke the `make' program:
071fcb2c
EZ
67
68 make
69
077bea6c 70 6. If `make' succeeds, it will build an executable program `emacs'
69e5e747
EZ
71 in the `src' directory. You can try this program, to make sure
72 it works:
071fcb2c
EZ
73
74 src/emacs -q
75
077bea6c 76 7. Assuming that the program `src/emacs' starts and displays its
071fcb2c
EZ
77 opening screen, you can install the program and its auxiliary
78 files into their installation directories:
79
80 make install
81
82 You are now ready to use Emacs. If you wish to conserve disk space,
83 you may remove the program binaries and object files from the
84 directory where you built Emacs:
85
86 make clean
87
4e98f5a6
DL
88 You can also save some space by compressing (with `gzip') Info files
89 and installed Lisp source (.el) files which have corresponding .elc
90 versions.
91
a0e671c7 92
85da25e9
RS
93ADDITIONAL DISTRIBUTION FILES
94
85da25e9
RS
95* intlfonts-VERSION.tar.gz
96
e4dd707c
DL
97The intlfonts distribution contains X11 fonts in various encodings
98that Emacs can use to display international characters. If you see a
99non-ASCII character appear as a hollow box, that means you don't have
100a font for it. You might find one in the intlfonts distribution. If
101you do have a font for a non-ASCII character, but some characters
102don't look right, or appear improperly aligned, a font from the
103intlfonts distribution might look better.
887af595 104
1d173668
EZ
105The fonts in the intlfonts distribution are also used by the ps-print
106package for printing international characters. The file
071fcb2c 107lisp/ps-mule.el defines the *.bdf font files required for printing
1d173668
EZ
108each character set.
109
887af595
RS
110The intlfonts distribution contains its own installation instructions,
111in the intlfonts/README file.
85da25e9 112
45e680a8
EZ
113* Image support libraries
114
115Emacs needs optional libraries to be able to display images (with the
071fcb2c
EZ
116exception of PBM and XBM images whose support is built-in).
117
118On some systems, particularly on GNU/Linux, these libraries may
d38796cb 119already be present or available as additional packages. Note that if
df9b0d0a
DL
120there is a separate `dev' or `devel' package, for use at compilation
121time rather than run time, you will need that as well as the
122corresponding run time package; typically the dev package will
123contain header files and a library archive. Otherwise, you can
124download and build libraries from sources. None of them are vital for
125running Emacs; however, note that Emacs will not be able to use
126colored icons in the toolbar if XPM support is not compiled in.
9792d8ac 127
071fcb2c
EZ
128Here's the list of these optional libraries, and the URLs where they
129can be found:
45e680a8 130
177c0ea7 131 . libXaw3d for fancy 3D-style
071fcb2c 132 scroll bars: ftp://ftp.x.org/contrib/widgets/Xaw3d/
45e680a8 133 . libxpm for XPM: ftp://ftp.x.org/contrib/libraries/
177c0ea7 134 Get version 3.4k or later, which lets Emacs
0c9d62f6 135 use its own color allocation functions.
1ab1d7c4
R
136 . libpng for PNG: ftp://ftp.simplesystems.org/pub/libpng/png/
137 . libz (for PNG): http://www.zlib.net/
45e680a8 138 . libjpeg for JPEG: ftp://ftp.uu.net/graphics/jpeg/
4756109e
DL
139 Get version 6b -- 6a is reported to fail in
140 Emacs.
45e680a8 141 . libtiff for TIFF: http://www.libtiff.org/
177c0ea7 142 . libungif for GIF:
1ab1d7c4 143 http://sourceforge.net/projects/libungif
c27bb0f4
DL
144 Ensure you get version 4.1.0b1 or higher of libungif -- a bug in
145 4.1.0 can crash Emacs.
ec6bd013 146
071fcb2c
EZ
147Emacs will configure itself to build with these libraries if the
148`configure' script finds them on your system, unless you supply the
149appropriate --without-LIB option. In some cases, older versions of
150these libraries won't work because some routines are missing, and
151configure should avoid such old versions. If that happens, use the
152--without-LIB options to `configure'. See below for more details.
45e680a8 153
4756109e
DL
154* Extra fonts
155
47774164
KH
156At first, Emacs does not include fonts and does not install them. You
157must do this yourself.
158
4756109e 159To take proper advantage of Emacs 21's mule-unicode charsets, you need
e4dd707c 160a suitable font. For `Unicode' (ISO 10646) fonts for X, see
1ab1d7c4 161<URL:http://czyborra.com/unifont/> (packaged in Debian),
e4dd707c
DL
162<URL:http://openlab.ring.gr.jp/efont/> (packaged in Debian). (In
163recent Debian versions, there is an extensive `misc-fixed' iso10646-1
164in the default X installation.) Perhaps also see
4756109e 165<URL:http://www.cl.cam.ac.uk/%7Emgk25/ucs-fonts.html>.
e4dd707c 166
4756109e
DL
167<URL:http://czyborra.com/charsets/> has basic fonts for Emacs's
168ISO-8859 charsets.
169
1ab1d7c4 170XFree86 release 4 (from <URL:ftp://ftp.xfree86.org/pub/XFree86/> and mirrors)
4756109e 171contains font support for most, if not all, of the charsets that Emacs
e4dd707c
DL
172currently supports, including iso10646-1 encoded fonts for use with
173the mule-unicode charsets. The font files should also be usable with
174older X releases. Note that XFree 4 contains many iso10646-1 fonts
175with minimal character repertoires, which can cause problems -- see
176etc/PROBLEMS.
4756109e 177
287e56d1
EZ
178BDF fonts etl-unicode.tar.gz used by ps-print and ps-mule to print
179Unicode characters are available from <URL:ftp://ftp.x.org/contrib/fonts/>
1ab1d7c4 180and <URL:ftp://ftp.xfree86.org/pub/mirror/X.Org/contrib/fonts/>.
287e56d1 181
5b31a763
KG
182* GNU/Linux development packages
183
184Many GNU/Linux systems do not come with development packages by
185default; they just include the files that you need to run Emacs, but
186not those you need to compile it. For example, to compile Emacs with
187X11 support, you may need to install the special `X11 development'
6740b4d6 188package. For example, in April 2003, the package names to install
e4dd707c
DL
189were `XFree86-devel' and `Xaw3d-devel' on RedHat. On Debian, the
190packages necessary to build the installed version should be
191sufficient; they can be installed using `apt-get build-dep emacs21' in
192Debian 3 and above.
45e680a8 193
6aaf2a72 194
071fcb2c 195DETAILED BUILDING AND INSTALLATION:
85da25e9 196
071fcb2c
EZ
197(This is for a Unix or Unix-like system. For MS-DOS and Windows 3.X,
198see below; search for MSDOG. For Windows 9X, Windows ME, Windows NT,
199and Windows 2000, see the file nt/INSTALL. For the Mac, see the file
200mac/INSTALL.)
a0e671c7
JB
201
2021) Make sure your system has enough swapping space allocated to handle
f1d6d1e8 203a program whose pure code is 1.5 MB and whose data area is at
4df45701 204least 2.8 MB and can reach 100 MB or more. If the swapping space is
a0e671c7 205insufficient, you will get an error in the command `temacs -batch -l
bde335e3 206loadup dump', found in `./src/Makefile.in', or possibly when
42db5687 207running the final dumped Emacs.
177c0ea7 208
4df45701
EZ
209Building Emacs requires about 140 MB of disk space (including the
210Emacs sources) Once installed, Emacs occupies about 77 MB in the file
077bea6c
EZ
211system where it is installed; this includes the executable files, Lisp
212libraries, miscellaneous data files, and on-line documentation. If
213the building and installation take place in different directories,
4df45701 214then the installation procedure momentarily requires 140+77 MB.
a0e671c7
JB
215
2162) Consult `./etc/MACHINES' to see what configuration name you should
f40423fa 217give to the `configure' program. That file offers hints for
071fcb2c
EZ
218getting around some possible installation problems. The file lists
219many different configurations, but only the part for your machine and
220operating system is relevant. (The list is arranged in alphabetical
221order by the vendor name.)
a0e671c7 222
ea3165c7
RS
2233) You can build Emacs in the top-level Emacs source directory
224or in a separate directory.
225
2263a) To build in the top-level Emacs source directory, go to that
227directory and run the program `configure' as follows:
a0e671c7 228
e4e772f1 229 ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ...
a0e671c7
JB
230
231The CONFIGURATION-NAME argument should be a configuration name given
e4e772f1
RS
232in `./etc/MACHINES', with the system version number added at the end.
233
234You should try first omitting CONFIGURATION-NAME. This way,
235`configure' will try to guess your system type. If it cannot guess,
236or if something goes wrong in building or installing Emacs this way,
237try again specifying the proper CONFIGURATION-NAME explicitly.
a0e671c7 238
f40423fa
DM
239If you don't want X support, specify `--with-x=no'. If you omit this
240option, `configure' will try to figure out for itself whether your
241system has X, and arrange to use it if present.
a0e671c7
JB
242
243The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
244process where the compiler should look for the include files and
f40423fa
DM
245object libraries used with the X Window System. Normally, `configure'
246is able to find them; these options are necessary if you have your X
763b1847
KH
247Window System files installed in unusual places. These options also
248accept a list of directories, separated with colons.
a0e671c7 249
f40423fa
DM
250To get more attractive menus, you can specify an X toolkit when you
251configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
488dd4c4 252TOOLKIT is `athena', `motif' or `gtk' (`yes' and `lucid' are synonyms for
f40423fa 253`athena'). On some systems, it does not work to use a toolkit with
45e680a8 254shared libraries. A free implementation of Motif, called LessTif, is
2171f01f
EZ
255available ftom <http://www.lesstif.org>. Compiling with LessTif or
256Motif causes a standard File Selection Dialog to pop up when you type
257"C-x C-f" and similar commands. You can get fancy 3D-style scroll
258bars, even without LessTif/Motif, if you have the Xaw3d library
071fcb2c
EZ
259installed (see "Image support libraries" above for Xaw3d
260availability).
a0e671c7 261
488dd4c4
JD
262If `--with-x-toolkit=gtk' is specified, you can tell configure where
263to search for GTK by specifying `--with-pkg-config-prog=PATH' where
1dafafa3 264PATH is the pathname to pkg-config. Note that GTK version 2.4 or
488dd4c4
JD
265newer is required for Emacs.
266
a0e671c7
JB
267The `--with-gcc' option specifies that the build process should
268compile Emacs using GCC. If you don't want to use GCC, specify
f40423fa
DM
269`--with-gcc=no'. If you omit this option, `configure' will search
270for GCC in your path, and use it if present.
a0e671c7 271
e10f2277
EZ
272The Emacs mail reader RMAIL is configured to be able to read mail from
273a POP3 server by default. Versions of the POP protocol older than
274POP3 are not supported. For Kerberos-authenticated POP add
275`--with-kerberos', for Hesiod support add `--with-hesiod'. While POP3
276is always enabled, whether Emacs actually uses POP is controlled by
277individual users--see the Rmail chapter of the Emacs manual.
c5f329d6 278
9792d8ac
DL
279For image support you may have to download, build, and install the
280appropriate image support libraries for image types other than XBM and
281PBM, see the list of URLs in "ADDITIONAL DISTRIBUTION FILES" above.
282(Note that PNG support requires libz in addition to libpng.)
45e680a8 283
9792d8ac
DL
284To disable individual types of image support in Emacs for some reason,
285even though configure finds the libraries, you can configure with one
286or more of these options:
45e680a8 287
9792d8ac
DL
288 --without-xpm for XPM image support
289 --without-jpeg for JPEG image support
290 --without-tiff for TIFF image support
291 --without-gif for GIF image support
292 --without-png for PNG image support
45e680a8 293
071fcb2c 294Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d
49f601d9
KS
295scroll bars.
296
297Use --without-xim to inhibit the default use of X Input Methods. In
298this case, the X resource useXIM can be used to turn on use of XIM.
299
300Use --disable-largefile omits support for files larger than 2GB on
301systems which support that.
302
303Use --without-sound to disable sound support.
071fcb2c 304
a0e671c7
JB
305The `--prefix=PREFIXDIR' option specifies where the installation process
306should put emacs and its data files. This defaults to `/usr/local'.
307- Emacs (and the other utilities users run) go in PREFIXDIR/bin
308 (unless the `--exec-prefix' option says otherwise).
f40423fa
DM
309- The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
310 (where VERSION is the version number of Emacs, like `19.27').
a0e671c7 311- The architecture-dependent files go in
f40423fa 312 PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
a0e671c7
JB
313 (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2),
314 unless the `--exec-prefix' option says otherwise.
315
316The `--exec-prefix=EXECDIR' option allows you to specify a separate
317portion of the directory tree for installing architecture-specific
318files, like executables and utility programs. If specified,
319- Emacs (and the other utilities users run) go in EXECDIR/bin, and
320- The architecture-dependent files go in
f40423fa 321 EXECDIR/libexec/emacs/VERSION/CONFIGURATION.
a0e671c7
JB
322EXECDIR/bin should be a directory that is normally in users' PATHs.
323
324For example, the command
325
326 ./configure mips-dec-ultrix --with-x11
327
328configures Emacs to build for a DECstation running Ultrix, with
329support for the X11 window system.
330
f40423fa 331`configure' doesn't do any compilation or installation
a0e671c7 332itself. It just creates the files that influence those things:
908477d9
DM
333`./Makefile', `lib-src/Makefile', `oldXMenu/Makefile',
334`lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details
335on exactly what it does, see the section called `CONFIGURATION BY
336HAND', below.
a0e671c7
JB
337
338When it is done, `configure' prints a description of what it did and
f40423fa
DM
339creates a shell script `config.status' which, when run, recreates the
340same configuration. If `configure' exits with an error after
341disturbing the status quo, it removes `config.status'. `configure'
342also creates a file `config.cache' that saves the results of its tests
343to make reconfiguring faster, and a file `config.log' containing compiler
344output (useful mainly for debugging `configure'). You can give
345`configure' the option `--cache-file=FILE' to use the results of the
346tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
347disable caching, for debugging `configure'.
a0e671c7 348
071fcb2c
EZ
349If the description of the system configuration printed by `configure'
350is not right, or if it claims some of the fatures or libraries are not
351available when you know they are, look at the `config.log' file for
352the trace of the failed tests performed by `configure' to check
353whether these features are supported. Typically, some test fails
354because the compiler cannot find some function in the system
355libraries, or some macro-processor definition in the system headers.
356
357Some tests might fail because the compiler should look in special
358directories for some header files, or link against optional
8416aa4e 359libraries, or use special compilation options. You can force
071fcb2c
EZ
360`configure' and the build process which follows it to do that by
361setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, and CC before
362running `configure'. CPPFLAGS lists the options passed to the
363preprocessor, CFLAGS are compilation options, LDFLAGS are options used
364when linking, LIBS are libraries to link against, and CC is the
365command which invokes the compiler.
366
4e98f5a6
DL
367Here's an example of a `configure' invocation, assuming a Bourne-like
368shell such as Bash, which uses these variables:
071fcb2c
EZ
369
370 CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
371 CFLAGS='-O3' LIBS='-lfoo -lbar' ./configure
372
373(this is all one long line). This tells `configure' to instruct the
374preprocessor to look in the `/foo/myinclude' directory for header
375files (in addition to the standard directories), instruct the linker
376to look in `/bar/mylib' for libraries, pass the -O3 optimization
377switch to the compiler, and link against libfoo.a and libbar.a
378libraries in addition to the standard ones.
379
a0e671c7 380The work of `configure' can be done by editing various files in the
ea3165c7
RS
381distribution, but using `configure' is easier. See the section called
382"CONFIGURATION BY HAND" below if you want to do the configuration
383yourself.
384
3853b) To build in a separate directory, go to that directory
386and run the program `configure' as follows:
387
388 SOURCE-DIR/configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
389
390SOURCE-DIR refers to the top-level Emacs source directory which is
391where Emacs's configure script is located. `configure' looks for the
392Emacs source code in the directory that `configure' is in.
393
394To build in a separate directory, you must use a version of `make'
395that supports the `VPATH' variable, such as GNU `make'.
a0e671c7 396
793faff1
RS
3973c) Some people try to build in a separate directory by filling
398it full of symlinks to the files in the real source directory.
e1655e2b
RS
399If you do that, `make all' does work, but `make install' fails:
400it copies the symbolic links rather than the actual files.
401
402As far as is known, there is no particular reason to use
403a directory full of links rather than use the standard GNU
404facilities to build in a separate directory (see 3b above).
405
a0e671c7 4064) Look at `./lisp/paths.el'; if some of those values are not right
0b60f47d
KH
407for your system, set up the file `./lisp/site-init.el' with Emacs
408Lisp code to override them; it is not a good idea to edit paths.el
a0e671c7
JB
409itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES,
410rather than `defvar', as used by `./lisp/paths.el'. For example,
411
412 (setq news-inews-program "/usr/bin/inews")
413
414is how you would override the default value of the variable
415news-inews-program (which is "/usr/local/inews").
416
35b12ec0
RS
417Before you override a variable this way, *look at the value* that the
418variable gets by default! Make sure you know what kind of value the
419variable should have. If you don't pay attention to what you are
420doing, you'll make a mistake.
421
42db5687
RS
4225) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
423Lisp code you want Emacs to load before it is dumped out. Use
424site-load.el for additional libraries if you arrange for their
425documentation strings to be in the etc/DOC file (see
bde335e3 426src/Makefile.in if you wish to figure out how to do that). For all
8c10f3e4
RS
427else, use site-init.el. Do not load byte-compiled code which
428was build with a non-nil value of `byte-compile-dynamic'.
a0e671c7 429
0d75540d
RS
430If you set load-path to a different value in site-init.el or
431site-load.el, Emacs will use *precisely* that value when it starts up
432again. If you do this, you are on your own!
d07ee75a 433
a0e671c7
JB
434Note that, on some systems, the code you place in site-init.el must
435not use expand-file-name or any other function which may look
436something up in the system's password and user information database.
4fece393 437See `./etc/PROBLEMS' for more details on which systems this affects.
a0e671c7 438
eaa91904
RS
439The `site-*.el' files are nonexistent in the distribution. You do not
440need to create them if you have nothing to put in them.
a0e671c7
JB
441
4426) Refer to the file `./etc/TERMS' for information on fields you may
443wish to add to various termcap entries. The files `./etc/termcap.ucb'
444and `./etc/termcap.dat' may already contain appropriately-modified
445entries.
446
4477) Run `make' in the top directory of the Emacs distribution to finish
c5f48ce3
RS
448building Emacs in the standard way. The final executable file is
449named `src/emacs'. You can execute this file "in place" without
450copying it, if you wish; then it automatically uses the sibling
451directories ../lisp, ../lib-src, ../info.
452
453Or you can "install" the executable and the other Emacs into their
454installed locations, with `make install'. By default, Emacs's files
455are installed in the following directories:
a0e671c7
JB
456
457`/usr/local/bin' holds the executable programs users normally run -
c9da8016
RS
458 `emacs', `etags', `ctags', `b2m', `emacsclient',
459 and `rcs-checkin'.
a0e671c7 460
f40423fa 461`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
a0e671c7 462 `VERSION' stands for the number of the Emacs version
f40423fa 463 you are installing, like `18.59' or `19.27'. Since the
cdb49480 464 Lisp library changes from one version of Emacs to
a0e671c7
JB
465 another, including the version number in the path
466 allows you to have several versions of Emacs installed
cdb49480
RS
467 at the same time; in particular, you don't have to
468 make Emacs unavailable while installing a new version.
a0e671c7 469
f40423fa 470`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
a0e671c7
JB
471 file, the `yow' database, and other
472 architecture-independent files Emacs might need while
473 running. VERSION is as specified for `.../lisp'.
474
f40423fa 475`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
a0e671c7
JB
476 programs used by Emacs that users are not expected to
477 run themselves.
478 `VERSION' is the number of the Emacs version you are
479 installing, and `CONFIGURATION-NAME' is the argument
480 you gave to the `configure' program to identify the
481 architecture and operating system of your machine,
482 like `mips-dec-ultrix' or `sparc-sun-sunos'. Since
483 these files are specific to the version of Emacs,
484 operating system, and architecture in use, including
485 the configuration name in the path allows you to have
486 several versions of Emacs for any mix of machines and
487 operating systems installed at the same time; this is
488 useful for sites at which different kinds of machines
489 share the file system Emacs is installed on.
490
491`/usr/local/info' holds the on-line documentation for Emacs, known as
492 "info files". Many other GNU programs are documented
493 using info files as well, so this directory stands
494 apart from the other, Emacs-specific directories.
495
496`/usr/local/man/man1' holds the man pages for the programs installed
497 in `/usr/local/bin'.
498
795b558b
RS
499Any version of Emacs, whether installed or not, also looks for Lisp
500files in these directories.
501
502`/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
503 files installed for Emacs version VERSION only.
504
505`/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
506 files installed for all Emacs versions.
507
508 When Emacs is installed, it searches for its Lisp files
509 in `/usr/local/share/emacs/VERSION/site-lisp', then in
510 `/usr/local/share/emacs/site-lisp', and finally in
511 `/usr/local/share/emacs/VERSION/lisp'.
512
a0e671c7
JB
513If these directories are not what you want, you can specify where to
514install Emacs's libraries and data files or where Emacs should search
cdb49480 515for its Lisp files by giving values for `make' variables as part of
a0e671c7
JB
516the command. See the section below called `MAKE VARIABLES' for more
517information on this.
518
5198) Check the file `dir' in your site's info directory (usually
520/usr/local/info) to make sure that it has a menu entry for the Emacs
521info files.
522
42db5687 5239) If your system uses lock files to interlock access to mailer inbox files,
f40423fa 524then you might need to make the movemail program setuid or setgid
42db5687
RS
525to enable it to write the lock files. We believe this is safe.
526
2d475b5f
KH
52710) You are done! You can remove executables and object files from
528the build directory by typing `make clean'. To also remove the files
529that `configure' created (so you can compile Emacs for a different
f12b4dea
EZ
530configuration), type `make distclean'. If you don't need some, or all
531of the input methods from the Leim package, you can remove the
3adec967
RS
532unneeded files in the leim subdirectories of your site's lisp
533directory (usually /usr/local/share/emacs/VERSION/).
2d475b5f 534
a0e671c7
JB
535
536
537MAKE VARIABLES
538
539You can change where the build process installs Emacs and its data
540files by specifying values for `make' variables as part of the `make'
541command line. For example, if you type
542
543 make install bindir=/usr/local/gnubin
544
545the `bindir=/usr/local/gnubin' argument indicates that the Emacs
546executable files should go in `/usr/local/gnubin', not
547`/usr/local/bin'.
548
549Here is a complete list of the variables you may want to set.
550
551`bindir' indicates where to put executable programs that users can
552 run. This defaults to /usr/local/bin.
553
554`datadir' indicates where to put the architecture-independent
555 read-only data files that Emacs refers to while it runs; it
908477d9 556 defaults to /usr/local/share. We create the following
a0e671c7 557 subdirectories under `datadir':
cdb49480 558 - `emacs/VERSION/lisp', containing the Emacs Lisp library, and
a0e671c7
JB
559 - `emacs/VERSION/etc', containing the Emacs tutorial, the DOC
560 file, and the `yow' database.
561 `VERSION' is the number of the Emacs version you are installing,
562 like `18.59' or `19.0'. Since these files vary from one version
563 of Emacs to another, including the version number in the path
564 allows you to have several versions of Emacs installed at the
565 same time; this means that you don't have to make Emacs
566 unavailable while installing a new version.
567
908477d9
DM
568`libexecdir' indicates where to put architecture-specific data files that
569 Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
570 We create the following subdirectories under `libexecdir':
a0e671c7
JB
571 - `emacs/VERSION/CONFIGURATION-NAME', containing executable
572 programs used by Emacs that users are not expected to run
177c0ea7 573 themselves.
a0e671c7
JB
574 `VERSION' is the number of the Emacs version you are installing,
575 and `CONFIGURATION-NAME' is the argument you gave to the
576 `configure' program to identify the architecture and operating
577 system of your machine, like `mips-dec-ultrix' or
578 `sparc-sun-sunos'. Since these files are specific to the version
579 of Emacs, operating system, and architecture in use, including
580 the configuration name in the path allows you to have several
581 versions of Emacs for any mix of machines and operating systems
582 installed at the same time; this is useful for sites at which
583 different kinds of machines share the file system Emacs is
584 installed on.
585
586`infodir' indicates where to put the info files distributed with
587 Emacs; it defaults to `/usr/local/info'.
588
589`mandir' indicates where to put the man pages for Emacs and its
590 utilities (like `etags'); it defaults to
591 `/usr/local/man/man1'.
592
593`manext' gives the extension the man pages should be installed with.
594 It should contain a period, followed by the appropriate
595 digit. It defaults to `.1'. For example given the default
596 values for `mandir' and `manext', the Emacs man page would be
597 installed as `/usr/local/man/man1/emacs.1'.
598
599`prefix' doesn't give a path for any specific part of Emacs; instead,
600 its value is used to determine the defaults for all the
601 architecture-independent path variables - `datadir',
908477d9 602 `sharedstatedir', `infodir', and `mandir'. Its default value is
a0e671c7
JB
603 `/usr/local'; the other variables add on `lib' or `man' to it
604 by default.
605
606 For example, suppose your site generally places GNU software
607 under `/usr/users/software/gnusoft' instead of `/usr/local'.
608 By including
609 `prefix=/usr/users/software/gnusoft'
610 in the arguments to `make', you can instruct the build process
611 to place all of the Emacs data files in the appropriate
612 directories under that path.
613
614`exec_prefix' serves the same purpose as `prefix', but instead
615 determines the default values for the architecture-dependent
908477d9 616 path variables - `bindir' and `libexecdir'.
a0e671c7
JB
617
618The above variables serve analogous purposes in the makefiles for all
5c462624 619GNU software; this variable is specific to Emacs.
a0e671c7 620
2d475b5f
KH
621`archlibdir' indicates where Emacs installs and expects the executable
622 files and other architecture-dependent data it uses while
623 running. Its default value, based on `libexecdir' (which
624 see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
a0e671c7
JB
625 (where VERSION and CONFIGURATION-NAME are as described above).
626
627Remember that you must specify any variable values you need each time
628you run `make' in the top directory. If you run `make' once to build
629emacs, test it, and then run `make' again to install the files, you
630must provide the same variable settings each time. To make the
631settings persist, you can edit them into the `Makefile' in the top
632directory, but be aware that running the `configure' program erases
633`Makefile' and rebuilds it from `Makefile.in'.
634
5c462624
RS
635The path for finding Lisp files is specified in src/paths.h,
636a file which is generated by running configure. To change the path,
637you can edit the definition of PATH_LOADSEARCH in that file
638before you run `make'.
639
a0e671c7
JB
640The top-level Makefile stores the variable settings it used in the
641Makefiles for the subdirectories, so you don't have to specify them
642when running make in the subdirectories.
643
644
645CONFIGURATION BY HAND
646
c9da8016
RS
647Instead of running the `configure' program, you have to perform the
648following steps.
a0e671c7 649
bde335e3 6501) Copy `./src/config.in' to `./src/config.h'.
a0e671c7
JB
651
6522) Consult `./etc/MACHINES' to see what configuration name you should
653use for your system. Look at the code of the `configure' script to
654see which operating system and architecture description files from
655`src/s' and `src/m' should be used for that configuration name. Edit
656`src/config.h', and change the two `#include' directives to include
657the appropriate system and architecture description files.
658
6592) Edit `./src/config.h' to set the right options for your system. If
660you need to override any of the definitions in the s/*.h and m/*.h
661files for your system and machine, do so by editing config.h, not by
662changing the s/*.h and m/*.h files. Occasionally you may need to
663redefine parameters used in `./lib-src/movemail.c'.
664
c9da8016 6653) Create src/Makefile and lib-src/Makefile from the corresponding
bde335e3 666`Makefile.in' files. First copy `Makefile.in' to `Makefile.c',
94684a2e 667then edit in appropriate substitutions for the @...@ constructs,
c9da8016
RS
668and then copy the shell commands near the end of `configure'
669that run cpp to construct `Makefile'.
a0e671c7 670
c9da8016
RS
6714) Create `Makefile' files in various other directories
672from the corresponding `Makefile.in' files. This isn't so hard,
673just a matter of substitution.
a0e671c7 674
a0e671c7 675The `configure' script is built from `configure.in' by the `autoconf'
91074c04 676program. You need version 2.51 or newer of `autoconf' to rebuild
f42e6f81 677`configure'.
a0e671c7
JB
678
679BUILDING GNU EMACS BY HAND
680
a4af02f3
RS
681Once Emacs is configured, running `make' in the top directory performs
682the following steps.
a0e671c7
JB
683
6841) Run `make src/paths.h' in the top directory. This produces
bde335e3 685`./src/paths.h' from the template file `./src/paths.in', changing
a0e671c7
JB
686the paths to the values specified in `./Makefile'.
687
c9da8016
RS
6882) Go to directory `./lib-src' and run `make'. This creates
689executables named `ctags' and `etags' and `wakeup' and `make-docfile'
690and `digest-doc' and `test-distrib'. And others.
a0e671c7 691
c9da8016
RS
6923) Go to directory `./src' and Run `make'. This refers to files in
693the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
a0e671c7
JB
694`../lib-src'.
695
696This creates a file `./src/emacs' which is the runnable Emacs,
c9da8016
RS
697which has another name that contains a version number.
698Each time you do this, that version number increments in the last place.
a0e671c7
JB
699
700It also creates a file in `./etc' whose name is `DOC' followed by the
701current Emacs version. This file contains documentation strings for
702all the functions in Emacs. Each time you run make to make a new
703emacs, a new DOC file with a new name is made. You must keep the DOC
704file for an Emacs version as long as you keep using that Emacs
705version.
706
707
708INSTALLATION BY HAND
709
a4af02f3
RS
710The steps below are done by running `make install' in the main
711directory of the Emacs distribution.
a0e671c7
JB
712
7131) Copy `./lisp' and its subdirectories, `./etc', and the executables
714in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
715
716Strictly speaking, not all of the executables in `./lib-src' need be copied.
4208da83 717- The programs `cvtmail', `fakemail', `hexl',
c9da8016
RS
718 `movemail', `profile', `rcs2log', `timer', `vcdiff', `wakeup',
719 and `yow' are used by Emacs; they do need to be copied.
720- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
a0e671c7 721 are intended to be run by users; they are handled below.
3ae888e8 722- The programs `make-docfile' and `test-distrib' were
a0e671c7
JB
723 used in building Emacs, and are not needed any more.
724- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into
725 a file for users to read. There is no important reason to move them.
726
7272) Copy the files in `./info' to the place specified in
728`./lisp/site-init.el' or `./lisp/paths.el'. Note that if the
729destination directory already contains a file named `dir', you
730probably don't want to replace it with the `dir' file in the Emacs
731distribution. Instead, you should make sure that the existing `dir'
732file contains an appropriate menu entry for the Emacs info.
733
100b770b 7343) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
a0e671c7
JB
735in users' search paths. `./src/emacs' has an alternate name
736`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
737`/usr/local/bin/emacs' pointing to that alternate name, as an easy way
738of installing different versions.
739
740You can delete `./src/temacs'.
741
100b770b 7424) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
c9da8016 743`rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are
a0e671c7
JB
744intended for users to run.
745
100b770b 7465) Copy the man pages in `./etc' for emacs, ctags, and etags into the
a0e671c7
JB
747appropriate man directories.
748
100b770b 7496) The files in the `./src' subdirectory, except for `emacs', are not
c9da8016
RS
750used by Emacs once it is built. However, it is very desirable to keep
751the source on line for debugging.
a0e671c7
JB
752
753
754PROBLEMS
755
4fece393 756See the file PROBLEMS in etc subdirectory for a list of various
a0e671c7
JB
757problems sometimes encountered, and what to do about them.
758
759
42db5687
RS
760Installation on MSDOG (a.k.a. MSDOS)
761
eaa91904 762To install on MSDOG, you need to have the GNU C compiler for MSDOG
3f0ec1b7
RS
763(also known as djgpp), GNU Make, rm, mv, and sed. See the remarks in
764config.bat for more information about locations and versions. The
765file etc/FAQ includes pointers to Internet sites where you can find
766the necessary utilities; search for "MS-DOS". The configuration step
767(see below) will test for these utilities and will refuse to continue
768if any of them isn't found.
769
c3ddcbc8
EZ
770Recompiling Lisp files in the `lisp' subdirectory using the various
771targets in the lisp/Makefile file requires additional utilities:
772`find' and `xargs' (from Findutils), `touch' (from Fileutils) GNU
773`echo' and `test' (from Sh-utils), `tr, `sort', and `uniq' (from
774Textutils), and a port of Bash. However, you should not normally need
775to run lisp/Makefile, as all the Lisp files are distributed in
776byte-compiled form as well.
777
3f0ec1b7
RS
778If you are building the MSDOG version of Emacs on an MSDOG-like system
779which supports long file names (e.g. Windows 95), you need to make
780sure that long file names are handled consistently both when you
781unpack the distribution and compile it. If you intend to compile with
782DJGPP v2.0 or later, and long file names support is enabled (LFN=y in
783the environment), you need to unpack Emacs distribution in a way that
784doesn't truncate the original long filenames to the DOS 8.3 namespace;
785the easiest way to do this is to use djtar program which comes with
786DJGPP, since it will note the LFN setting and behave accordingly.
787DJGPP v1 doesn't support long filenames, so you must unpack Emacs with
788a program that truncates the filenames to 8.3 naming as it extracts
789files; again, using djtar after setting LFN=n is the recommended way.
790You can build Emacs with LFN=n even if you use DJGPP v2, if some of
791your tools don't support long file names: just ensure that LFN is set
792to `n' during both unpacking and compiling.
793
794(By the time you read this, you have already unpacked the Emacs
795distribution, but if the explanations above imply that you should have
796done it differently, it's safer to delete the directory tree created
797by the unpacking program and unpack Emacs again, than to risk running
798into problems during the build process.)
799
800It is important to understand that the runtime support of long file
801names by the Emacs binary is NOT affected by the LFN setting during
802compilation; Emacs compiled with DJGPP v2.0 or later will always
45e680a8 803support long file names on Windows 9X no matter what was the setting
e60ea278
KH
804of LFN at compile time. However, if you compiled with LFN disabled
805and want to enable LFN support after Emacs was already built, you need
806to make sure that the support files in the lisp, etc and info
807directories are called by their original long names as found in the
808distribution. You can do this either by renaming the files manually,
809or by extracting them from the original distribution archive with
810djtar after you set LFN=y in the environment.
3f0ec1b7
RS
811
812To unpack Emacs with djtar, type this command:
813
814 djtar -x emacs.tgz
815
816(This assumes that the Emacs distribution is called `emacs.tgz' on
e2726984 817your system.)
3f0ec1b7 818
1d173668 819If you want to print international characters, install the intlfonts
46ccfd36 820distribution. For this, create a directory called `fonts' under the
1d173668
EZ
821Emacs top-level directory (usually called `emacs-XX.YY') created by
822unpacking emacs.tgz, chdir into the directory emacs-XX.YY/fonts, and
823type this:
824
825 djtar -x intlfonts.tgz
826
3f0ec1b7
RS
827When unpacking is done, a directory called `emacs-XX.YY' will be
828created, where XX.YY is the Emacs version. To build and install
829Emacs, chdir to that directory and type these commands:
0287f07c
RS
830
831 config msdos
832 make install
42db5687 833
84391f69
EZ
834Running "config msdos" checks for several programs that are required
835to configure and build Emacs; if one of those programs is not found,
836CONFIG.BAT stops and prints an error message. If you have DJGPP
837version 2.0 or 2.01, it will complain about a program called
838DJECHO.EXE. These old versions of DJGPP shipped that program under
839the name ECHO.EXE, so you can simply copy ECHO.EXE to DJECHO.EXE and
840rerun CONFIG.BAT. If you have neither ECHO.EXE nor DJECHO.EXE, you
841should be able to find them in your djdevNNN.zip archive (where NNN is
842the DJGPP version number).
843
41af82c3
EZ
844On Windows NT or Windows 2000, running "config msdos" might print an
845error message like "VDM has been already loaded". This is because
846those systems have a program called `redir.exe' which is incompatible
847with a program by the same name supplied with DJGPP, which is used by
848config.bat. To resolve this, move the DJGPP's `bin' subdirectory to
849the front of your PATH environment variable.
850
46ccfd36
EZ
851To install the international fonts, chdir to the intlfonts-X.Y
852directory created when you unpacked the intlfonts distribution (X.Y is
853the version number of the fonts' distribution), and type the following
854command:
855
856 make bdf INSTALLDIR=..
857
858After Make finishes, you may remove the directory intlfonts-X.Y; the
859fonts are installed into the fonts/bdf subdirectory of the top-level
860Emacs directory, and that is where Emacs will look for them by
861default.
862
db50afc0
RS
863Building Emacs creates executable files in the src and lib-src
864directories. Installing Emacs on MSDOS moves these executables to a
865sibling directory called bin. For example, if you build in directory
866/emacs, installing moves the executables from /emacs/src and
867/emacs/lib-src to the directory /emacs/bin, so you can then delete the
868subdirectories /emacs/src and /emacs/lib-src if you wish. The only
1d173668 869subdirectories you need to keep are bin, lisp, etc and info. (If you
077bea6c
EZ
870installed intlfonts, keep the fonts directory and all its
871subdirectories as well.) The bin subdirectory should be added to your
872PATH. The msdos subdirectory includes a PIF and an icon file for
873Emacs which you might find useful if you run Emacs under MS Windows.
db50afc0
RS
874
875Emacs on MSDOS finds the lisp, etc and info directories by looking in
876../lisp, ../etc and ../info, starting from the directory where the
877Emacs executable was run from. You can override this by setting the
e2726984
RS
878environment variables EMACSDATA (for the location of `etc' directory),
879EMACSLOADPATH (for the location of `lisp' directory) and INFOPATH (for
880the location of the `info' directory).
42db5687 881
eaa91904
RS
882MSDOG is a not a multitasking operating system, so Emacs features such
883as asynchronous subprocesses that depend on multitasking will not
884work. Synchronous subprocesses do work.
d536be4a 885
22609647
RS
886Version 2.0 of djgpp has two bugs that affect Emacs. We've included
887corrected versions of two files from djgpp in the msdos subdirectory:
888is_exec.c and sigaction.c. To work around the bugs, compile these
45e680a8
EZ
889files and link them into temacs. Djgpp versions 2.01 and later have
890these bugs fixed, so upgrade if you can before building Emacs.
e2b6e5ea 891\f
69e5e747
EZ
892COPYING PERMISSIONS
893
e2b6e5ea
EZ
894 Permission is granted to anyone to make or distribute verbatim copies
895 of this document as received, in any medium, provided that the
896 copyright notice and permission notice are preserved,
897 and that the distributor grants the recipient permission
898 for further redistribution as permitted by this notice.
899
900 Permission is granted to distribute modified versions
901 of this document, or of portions of it,
902 under the above conditions, provided also that they
903 carry prominent notices stating who last changed them,
904 and that any new or changed statements about the activities
905 of the Free Software Foundation are approved by the Foundation.