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