comparison INSTALL @ 110091:66a2fac996a4

merge emacs-23
author Kenichi Handa <handa@m17n.org>
date Fri, 27 Aug 2010 23:05:43 +0900
parents fe1cb647c842
children 6c39bda25895 376148b31b5e
comparison
equal deleted inserted replaced
107913:4a06b9752df5 110091:66a2fac996a4
1 GNU Emacs Installation Guide 1 GNU Emacs Installation Guide
2 Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2 Copyright (C) 1992, 1994, 1996, 1997, 2000, 2001, 2002, 2003, 2004,
3 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. 3 2005, 2006, 2007, 2008, 2009, 2010
4 Free Software Foundation, Inc.
4 See the end of the file for license conditions. 5 See the end of the file for license conditions.
5 6
6 7
7 This file contains general information. For more specific information 8 This file contains general information on building GNU Emacs.
8 for the Windows, GNUstep/Mac OS X, and MS-DOS ports, also see the files 9 For more information specific to the MS-Windows, GNUstep/Mac OS X, and
9 nt/INSTALL nextstep/INSTALL, and msdos/INSTALL. For information 10 MS-DOS ports, also read the files nt/INSTALL, nextstep/INSTALL, and
10 specific to building from a Bazaar checkout (rather than a release), see 11 msdos/INSTALL. For information about building from a Bazaar checkout
11 the file INSTALL.BZR. 12 (rather than a release), also read the file INSTALL.BZR.
12 13
13 14
14 BASIC INSTALLATION 15 BASIC INSTALLATION
15 16
16 The simplest way to build Emacs is to use the `configure' shell script 17 On most Unix systems, you build Emacs by first running the `configure'
17 which attempts to guess correct values for various system-dependent 18 shell script. This attempts to deduce the correct values for
18 variables and features and find the directories where various system 19 various system-dependent variables and features, and find the
19 headers and libraries are kept. It then creates a `Makefile' in each 20 directories where certain system headers and libraries are kept.
20 subdirectory and a `config.h' file containing system-dependent 21 In a few cases, you may need to explicitly tell configure where to
21 definitions. Running the `make' utility then builds the package for 22 find some things, or what options to use.
22 your system. 23
24 `configure' creates a `Makefile' in several subdirectories, and a
25 `src/config.h' file containing system-dependent definitions.
26 Running the `make' utility then builds the package for your system.
23 27
24 Here's the procedure to build Emacs using `configure' on systems which 28 Here's the procedure to build Emacs using `configure' on systems which
25 are supported by it. If this simplified procedure fails, or if you 29 are supported by it. In some cases, if the simplified procedure fails,
26 are using a platform such as MS-Windows, where `configure' script 30 you might need to use various non-default options, and maybe perform
27 doesn't work, you might need to use various non-default options, and 31 some of the steps manually. The more detailed description in the other
28 maybe perform some of the steps manually. The more detailed 32 sections of this guide will help you do that, so please refer to those
29 description in the rest of the sections of this guide will help you do 33 sections if you need to.
30 that, so please refer to them if the simple procedure does not work. 34
31 35 1. Unpacking the Emacs 23.2 release requires about 170 MB of free
32 1. Make sure your system has at least 120 MB of free disk space. 36 disk space. Building Emacs uses about another 60 MB of space.
37 The final installed Emacs uses about 120 MB of disk space.
38 This includes the space-saving that comes from automatically
39 compressing the Lisp source files on installation.
33 40
34 2a. `cd' to the directory where you unpacked Emacs and invoke the 41 2a. `cd' to the directory where you unpacked Emacs and invoke the
35 `configure' script: 42 `configure' script:
36 43
37 ./configure 44 ./configure
40 directory, where you want to build Emacs, and invoke `configure' 47 directory, where you want to build Emacs, and invoke `configure'
41 from there: 48 from there:
42 49
43 SOURCE-DIR/configure 50 SOURCE-DIR/configure
44 51
45 where SOURCE-DIR is the top-level Emacs source directory. This 52 where SOURCE-DIR is the top-level Emacs source directory.
46 may not work unless you use GNU make. 53 This may not work unless you use GNU make.
47 54
48 3. When `configure' finishes, it prints several lines of details 55 3. When `configure' finishes, it prints several lines of details
49 about the system configuration. Read those details carefully 56 about the system configuration. Read those details carefully
50 looking for anything suspicious, such as wrong CPU and operating 57 looking for anything suspicious, such as wrong CPU and operating
51 system names, wrong places for headers or libraries, missing 58 system names, wrong places for headers or libraries, missing
52 libraries that you know are installed on your system, etc. 59 libraries that you know are installed on your system, etc.
53 60
54 If you find anything wrong, you will have to pass to `configure' 61 If you find anything wrong, you may have to pass to `configure'
55 explicit machine configuration name, and one or more options 62 one or more options specifying the explicit machine configuration
56 which tell it where to find various headers and libraries; refer 63 name, where to find various headers and libraries, etc.
57 to DETAILED BUILDING AND INSTALLATION section below. 64 Refer to the section DETAILED BUILDING AND INSTALLATION below.
58 65
59 If `configure' didn't find some image support libraries, such as 66 If `configure' didn't find some (optional) image support libraries,
60 Xpm, jpeg, etc., and you want to use them refer to the subsection 67 such as Xpm, jpeg, etc., and you want to use them, refer to the
61 "Image support libraries", below. 68 subsection "Image support libraries" below.
62 69
63 If the details printed by `configure' don't make any sense to 70 If the details printed by `configure' don't make any sense to
64 you, assume that `configure' did its job and proceed. 71 you, but there are no obvious errors, assume that `configure' did
72 its job and proceed.
65 73
66 4. If you need to run the `configure' script more than once (e.g., 74 4. If you need to run the `configure' script more than once (e.g.,
67 with some non-default options), always clean the source 75 with some non-default options), always clean the source
68 directories before running `configure' again: 76 directories before running `configure' again:
69 77
76 84
77 6. If `make' succeeds, it will build an executable program `emacs' 85 6. If `make' succeeds, it will build an executable program `emacs'
78 in the `src' directory. You can try this program, to make sure 86 in the `src' directory. You can try this program, to make sure
79 it works: 87 it works:
80 88
81 src/emacs -q 89 src/emacs -Q
82 90
83 7. Assuming that the program `src/emacs' starts and displays its 91 7. Assuming that the program `src/emacs' starts and displays its
84 opening screen, you can install the program and its auxiliary 92 opening screen, you can install the program and its auxiliary
85 files into their installation directories: 93 files into their installation directories:
86 94
90 you may remove the program binaries and object files from the 98 you may remove the program binaries and object files from the
91 directory where you built Emacs: 99 directory where you built Emacs:
92 100
93 make clean 101 make clean
94 102
95 You can also save some space by compressing (with `gzip') Info files 103 You can delete the entire build directory if you do not plan to
96 and installed Lisp source (.el) files which have corresponding .elc 104 build Emacs again, but it can be useful to keep for debugging.
97 versions. 105
106 Note that the install automatically saves space by compressing
107 (provided you have the `gzip' program) those installed Lisp source (.el)
108 files that have corresponding .elc versions. You may also wish
109 to compress the installed Info files.
98 110
99 111
100 ADDITIONAL DISTRIBUTION FILES 112 ADDITIONAL DISTRIBUTION FILES
101 113
102 * Complex Text Layout support libraries 114 * Complex Text Layout support libraries
154 contain header files and a library archive. Otherwise, you can 166 contain header files and a library archive. Otherwise, you can
155 download and build libraries from sources. None of them are vital for 167 download and build libraries from sources. None of them are vital for
156 running Emacs; however, note that Emacs will not be able to use 168 running Emacs; however, note that Emacs will not be able to use
157 colored icons in the toolbar if XPM support is not compiled in. 169 colored icons in the toolbar if XPM support is not compiled in.
158 170
159 Here's the list of these optional libraries, and the URLs where they 171 Here's the list of some of these optional libraries, and the URLs
160 can be found: 172 where they can be found (in the unlikely event that your distribution
161 173 does not provide them):
162 . libXaw3d for fancy 3D-style 174
163 scroll bars: ftp://ftp.x.org/contrib/widgets/Xaw3d/ 175 . libXaw3d http://directory.fsf.org/project/xaw3d/
164 . libxpm for XPM: ftp://ftp.x.org/contrib/libraries/ 176 . libxpm for XPM: http://www.x.org/releases/current/src/lib/
165 Get version 3.4k or later, which lets Emacs 177 . libpng for PNG: http://www.libpng.org/
166 use its own color allocation functions.
167 . libpng for PNG: ftp://ftp.simplesystems.org/pub/libpng/png/
168 . libz (for PNG): http://www.zlib.net/ 178 . libz (for PNG): http://www.zlib.net/
169 . libjpeg for JPEG: ftp://ftp.uu.net/graphics/jpeg/ 179 . libjpeg for JPEG: http://www.ijg.org/
170 Get version 6b -- 6a is reported to fail in
171 Emacs.
172 . libtiff for TIFF: http://www.libtiff.org/ 180 . libtiff for TIFF: http://www.libtiff.org/
173 . libgif for GIF: http://sourceforge.net/projects/giflib/ 181 . libgif for GIF: http://sourceforge.net/projects/giflib/
174 182
175 Emacs will configure itself to build with these libraries if the 183 Emacs will configure itself to build with these libraries if the
176 `configure' script finds them on your system, unless you supply the 184 `configure' script finds them on your system, unless you supply the
177 appropriate --without-LIB option. In some cases, older versions of 185 appropriate --without-LIB option. In some cases, older versions of
178 these libraries won't work because some routines are missing, and 186 these libraries won't work because some routines are missing, and
179 configure should avoid such old versions. If that happens, use the 187 configure should avoid such old versions. If that happens, use the
180 --without-LIB options to `configure'. See below for more details. 188 --without-LIB options to `configure', if you need to.
181 189
182 * Extra fonts 190 * Extra fonts
183 191
184 The Emacs distribution does not include fonts and does not install 192 The Emacs distribution does not include fonts and does not install
185 them. You must do that yourself. 193 them.
186 194
187 Emacs running on the GNU system supports both X fonts and local fonts 195 On the GNU system, Emacs supports both X fonts and local fonts
188 (i.e. the fonts managed by the fontconfig library). 196 (i.e. fonts managed by the fontconfig library). If you need more
189 197 fonts than your distribution normally provides, you must install them
190 For `Unicode' (ISO 10646) X fonts, see 198 yourself. See <URL:http://www.gnu.org/software/freefont/> for a large
191 <URL:http://czyborra.com/unifont/> (packaged in Debian), 199 number of free Unicode fonts.
192 <URL:http://openlab.ring.gr.jp/efont/> (packaged in Debian). (In
193 recent Debian versions, there is an extensive `misc-fixed' iso10646-1
194 in the default X installation.) Perhaps also see
195 <URL:http://www.cl.cam.ac.uk/%7Emgk25/ucs-fonts.html>.
196
197 <URL:http://czyborra.com/charsets/> has basic fonts for Emacs's
198 ISO-8859 charsets.
199
200 XFree86 release 4 (from <URL:ftp://ftp.xfree86.org/pub/XFree86/> and mirrors)
201 contains font support for most, if not all, of the charsets that Emacs
202 currently supports, including iso10646-1 encoded fonts for use with
203 the mule-unicode charsets. The font files should also be usable with
204 older X releases. Note that XFree 4 contains many iso10646-1 fonts
205 with minimal character repertoires, which can cause problems -- see
206 etc/PROBLEMS.
207
208 BDF Unicode fonts etl-unicode.tar.gz are available from
209 <URL:ftp://ftp.x.org/contrib/fonts/> and
210 <URL:ftp://ftp.xfree86.org/pub/mirror/X.Org/contrib/fonts/>. These
211 fonts can also be used by ps-print and ps-mule to print Unicode
212 characters.
213
214 Finally, the Web page <URL:http://www.gnu.org/software/freefont/>
215 lists a large number of free Unicode fonts.
216 200
217 * GNU/Linux development packages 201 * GNU/Linux development packages
218 202
219 Many GNU/Linux systems do not come with development packages by 203 Many GNU/Linux systems do not come with development packages by default;
220 default; they just include the files that you need to run Emacs, but 204 they include the files that you need to run Emacs, but not those you
221 not those you need to compile it. For example, to compile Emacs with 205 need to compile it. For example, to compile Emacs with support for X
222 X11 support, you may need to install the special `X11 development' 206 and graphics libraries, you may need to install the `X development'
223 package. For example, in April 2003, the package names to install 207 package(s), and development versions of the jpeg, png, etc. packages.
224 were `XFree86-devel' and `Xaw3d-devel' on Red Hat. On Debian, the 208
225 packages necessary to build the installed version should be 209 The names of the packages that you need varies according to the
226 sufficient; they can be installed using `apt-get build-dep emacs21' in 210 GNU/Linux distribution that you use, and the options that you want to
227 Debian 3 and above. 211 configure Emacs with. On Debian-based systems, you can install all the
212 packages needed to build the installed version of Emacs with a command
213 like `apt-get build-dep emacs23'.
228 214
229 215
230 DETAILED BUILDING AND INSTALLATION: 216 DETAILED BUILDING AND INSTALLATION:
231 217
232 (This is for a Unix or Unix-like system. For MS-DOS and Windows 3.X, 218 (This is for a Unix or Unix-like system. For MS-DOS and MS Windows 3.X,
233 see msdos/INSTALL. For Windows 9X, Windows ME, Windows NT, Windows 219 see msdos/INSTALL. For later versions of MS Windows, see the file
234 2000, Windows XP/2003, and Windows Vista/2008, see the file
235 nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.) 220 nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.)
236 221
237 1) Make sure your system has enough swapping space allocated to handle 222 1) Make sure your system has enough swapping space allocated to handle
238 a program whose pure code is 1.5 MB and whose data area is at 223 a program whose pure code is 1.5 MB and whose data area is at
239 least 2.8 MB and can reach 100 MB or more. If the swapping space is 224 least 2.8 MB and can reach 100 MB or more. If the swapping space is
240 insufficient, you will get an error in the command `temacs -batch -l 225 insufficient, you will get an error in the command `temacs -batch -l
241 loadup dump', found in `./src/Makefile.in', or possibly when 226 loadup dump', found in `./src/Makefile.in', or possibly when
242 running the final dumped Emacs. 227 running the final dumped Emacs. (This should not be an issue
243 228 on any recent system.)
244 Building Emacs requires about 140 MB of disk space (including the 229
245 Emacs sources) Once installed, Emacs occupies about 77 MB in the file 230 Building Emacs requires about 230 MB of disk space (including the
231 Emacs sources). Once installed, Emacs occupies about 120 MB in the file
246 system where it is installed; this includes the executable files, Lisp 232 system where it is installed; this includes the executable files, Lisp
247 libraries, miscellaneous data files, and on-line documentation. If 233 libraries, miscellaneous data files, and on-line documentation. If
248 the building and installation take place in different directories, 234 the building and installation take place in different directories,
249 then the installation procedure momentarily requires 140+77 MB. 235 then the installation procedure momentarily requires 230+120 MB.
250 236
251 2) Consult `./etc/MACHINES' to see what configuration name you should 237 2) In the unlikely event that `configure' does not detect your system
252 give to the `configure' program. That file offers hints for 238 type correctly, consult `./etc/MACHINES' to see what --host, --build
253 getting around some possible installation problems. The file lists 239 options you should pass to `configure'. That file also offers hints
254 many different configurations, but only the part for your machine and 240 for getting around some possible installation problems.
255 operating system is relevant. (The list is arranged in alphabetical
256 order by the vendor name.)
257 241
258 3) You can build Emacs in the top-level Emacs source directory 242 3) You can build Emacs in the top-level Emacs source directory
259 or in a separate directory. 243 or in a separate directory.
260 244
261 3a) To build in the top-level Emacs source directory, go to that 245 3a) To build in the top-level Emacs source directory, go to that
262 directory and run the program `configure' as follows: 246 directory and run the program `configure' as follows:
263 247
264 ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ... 248 ./configure [--OPTION[=VALUE]] ...
265 249
266 The CONFIGURATION-NAME argument should be a configuration name given 250 If `configure' cannot determine your system type, try again
267 in `./etc/MACHINES', with the system version number added at the end. 251 specifying the proper --build, --host options explicitly.
268
269 You should try first omitting CONFIGURATION-NAME. This way,
270 `configure' will try to guess your system type. If it cannot guess,
271 or if something goes wrong in building or installing Emacs this way,
272 try again specifying the proper CONFIGURATION-NAME explicitly.
273 252
274 If you don't want X support, specify `--with-x=no'. If you omit this 253 If you don't want X support, specify `--with-x=no'. If you omit this
275 option, `configure' will try to figure out for itself whether your 254 option, `configure' will try to figure out for itself whether your
276 system has X, and arrange to use it if present. 255 system has X, and arrange to use it if present.
277 256
282 Window System files installed in unusual places. These options also 261 Window System files installed in unusual places. These options also
283 accept a list of directories, separated with colons. 262 accept a list of directories, separated with colons.
284 263
285 To get more attractive menus, you can specify an X toolkit when you 264 To get more attractive menus, you can specify an X toolkit when you
286 configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where 265 configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
287 TOOLKIT is `athena', `motif' or `gtk' (`yes' and `lucid' are synonyms 266 TOOLKIT is `gtk' (the default), `athena', or `motif' (`yes' and
288 for `athena'). On some systems, it does not work to use a toolkit 267 `lucid' are synonyms for `athena'). On some systems, it does not work
289 with shared libraries. A free implementation of Motif, called 268 to use a toolkit with shared libraries. A free implementation of
290 LessTif, is available from <http://www.lesstif.org>. Compiling with 269 Motif, called LessTif, is available from <http://www.lesstif.org>.
291 LessTif or Motif causes a standard File Selection Dialog to pop up 270 Compiling with LessTif or Motif causes a standard File Selection
292 when you invoke file commands with the mouse. You can get fancy 271 Dialog to pop up when you invoke file commands with the mouse. You
293 3D-style scroll bars, even without LessTif/Motif, if you have the 272 can get fancy 3D-style scroll bars, even without Gtk or LessTif/Motif,
294 Xaw3d library installed (see "Image support libraries" above for Xaw3d 273 if you have the Xaw3d library installed (see "Image support libraries"
295 availability). 274 above for Xaw3d availability).
296 275
297 If `--with-x-toolkit=gtk' is specified, you can tell configure where 276 You can tell configure where to search for GTK by specifying
298 to search for GTK by specifying `--with-pkg-config-prog=PATH' where 277 `--with-pkg-config-prog=PATH' where PATH is the pathname to
299 PATH is the pathname to pkg-config. Note that GTK version 2.4 or 278 pkg-config. Note that GTK version 2.6 or newer is required for Emacs.
300 newer is required for Emacs.
301 279
302 The Emacs mail reader RMAIL is configured to be able to read mail from 280 The Emacs mail reader RMAIL is configured to be able to read mail from
303 a POP3 server by default. Versions of the POP protocol older than 281 a POP3 server by default. Versions of the POP protocol older than
304 POP3 are not supported. For Kerberos-authenticated POP add 282 POP3 are not supported. For Kerberos-authenticated POP add
305 `--with-kerberos', for Hesiod support add `--with-hesiod'. While POP3 283 `--with-kerberos', for Hesiod support add `--with-hesiod'. While POP3
322 --without-png for PNG image support 300 --without-png for PNG image support
323 301
324 Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d 302 Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d
325 scroll bars. 303 scroll bars.
326 304
327 Use --without-xim to inhibit the default use of X Input Methods. In 305 Use --without-xim to inhibit the default use of X Input Methods.
328 this case, the X resource useXIM can be used to turn on use of XIM. 306 In this case, the X resource useXIM can be used to turn on use of XIM.
329 307
330 Use --disable-largefile omits support for files larger than 2GB on 308 Use --disable-largefile to omit support for files larger than 2GB on
331 systems which support that. 309 systems which support that.
332 310
333 Use --without-sound to disable sound support. 311 Use --without-sound to disable sound support.
334 312
335 The `--prefix=PREFIXDIR' option specifies where the installation process 313 The `--prefix=PREFIXDIR' option specifies where the installation process
336 should put emacs and its data files. This defaults to `/usr/local'. 314 should put emacs and its data files. This defaults to `/usr/local'.
337 - Emacs (and the other utilities users run) go in PREFIXDIR/bin 315 - Emacs (and the other utilities users run) go in PREFIXDIR/bin
338 (unless the `--exec-prefix' option says otherwise). 316 (unless the `--exec-prefix' option says otherwise).
339 - The architecture-independent files go in PREFIXDIR/share/emacs/VERSION 317 - The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
340 (where VERSION is the version number of Emacs, like `19.27'). 318 (where VERSION is the version number of Emacs, like `23.2').
341 - The architecture-dependent files go in 319 - The architecture-dependent files go in
342 PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION 320 PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
343 (where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2), 321 (where CONFIGURATION is the configuration name, like
344 unless the `--exec-prefix' option says otherwise. 322 i686-pc-linux-gnu), unless the `--exec-prefix' option says otherwise.
345 323
346 The `--exec-prefix=EXECDIR' option allows you to specify a separate 324 The `--exec-prefix=EXECDIR' option allows you to specify a separate
347 portion of the directory tree for installing architecture-specific 325 portion of the directory tree for installing architecture-specific
348 files, like executables and utility programs. If specified, 326 files, like executables and utility programs. If specified,
349 - Emacs (and the other utilities users run) go in EXECDIR/bin, and 327 - Emacs (and the other utilities users run) go in EXECDIR/bin, and
351 EXECDIR/libexec/emacs/VERSION/CONFIGURATION. 329 EXECDIR/libexec/emacs/VERSION/CONFIGURATION.
352 EXECDIR/bin should be a directory that is normally in users' PATHs. 330 EXECDIR/bin should be a directory that is normally in users' PATHs.
353 331
354 For example, the command 332 For example, the command
355 333
356 ./configure mips-dec-ultrix --with-x11 334 ./configure --build=i386-linux-gnu --without-sound
357 335
358 configures Emacs to build for a DECstation running Ultrix, with 336 configures Emacs to build for a 32-bit GNU/Linux distribution,
359 support for the X11 window system. 337 without sound support.
360 338
361 `configure' doesn't do any compilation or installation 339 `configure' doesn't do any compilation or installation itself.
362 itself. It just creates the files that influence those things: 340 It just creates the files that influence those things:
363 `./Makefile', `lib-src/Makefile', `oldXMenu/Makefile', 341 `./Makefile' in the top-level directory and several subdirectories;
364 `lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details 342 and `./src/config.h'. For details on exactly what it does, see the
365 on exactly what it does, see the section called `CONFIGURATION BY 343 section called `CONFIGURATION BY HAND', below.
366 HAND', below.
367 344
368 When it is done, `configure' prints a description of what it did and 345 When it is done, `configure' prints a description of what it did and
369 creates a shell script `config.status' which, when run, recreates the 346 creates a shell script `config.status' which, when run, recreates the
370 same configuration. If `configure' exits with an error after 347 same configuration. If `configure' exits with an error after
371 disturbing the status quo, it removes `config.status'. `configure' 348 disturbing the status quo, it removes `config.status'. `configure'
403 380
404 (this is all one long line). This tells `configure' to instruct the 381 (this is all one long line). This tells `configure' to instruct the
405 preprocessor to look in the `/foo/myinclude' directory for header 382 preprocessor to look in the `/foo/myinclude' directory for header
406 files (in addition to the standard directories), instruct the linker 383 files (in addition to the standard directories), instruct the linker
407 to look in `/bar/mylib' for libraries, pass the -O3 optimization 384 to look in `/bar/mylib' for libraries, pass the -O3 optimization
408 switch to the compiler, and link against libfoo.a and libbar.a 385 switch to the compiler, and link against libfoo and libbar
409 libraries in addition to the standard ones. 386 libraries in addition to the standard ones.
410 387
411 For some libraries, like Gtk+, fontconfig and ALSA, `configure' use 388 For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses
412 pkg-config to find where those libraries are installed. 389 pkg-config to find where those libraries are installed.
413 If you want pkg-config to look in special directories, you have to set 390 If you want pkg-config to look in special directories, you have to set
414 the environment variable PKG_CONFIG_PATH to point to the directories 391 the environment variable PKG_CONFIG_PATH to point to the directories
415 where the .pc-files for those libraries are. 392 where the .pc-files for those libraries are.
416 For example: 393 For example:
433 Emacs source code in the directory that `configure' is in. 410 Emacs source code in the directory that `configure' is in.
434 411
435 To build in a separate directory, you must use a version of `make' 412 To build in a separate directory, you must use a version of `make'
436 that supports the `VPATH' variable, such as GNU `make'. 413 that supports the `VPATH' variable, such as GNU `make'.
437 414
438 3c) Some people try to build in a separate directory by filling 415 (Do not try to build in a separate directory by creating many links
439 it full of symlinks to the files in the real source directory. 416 to the real source directory--there is no need, and installation will
440 If you do that, `make all' does work, but `make install' fails: 417 fail.)
441 it copies the symbolic links rather than the actual files.
442
443 As far as is known, there is no particular reason to use
444 a directory full of links rather than use the standard GNU
445 facilities to build in a separate directory (see 3b above).
446 418
447 4) Look at `./lisp/paths.el'; if some of those values are not right 419 4) Look at `./lisp/paths.el'; if some of those values are not right
448 for your system, set up the file `./lisp/site-init.el' with Emacs 420 for your system, set up the file `./lisp/site-init.el' with Emacs
449 Lisp code to override them; it is not a good idea to edit paths.el 421 Lisp code to override them; it is not a good idea to edit paths.el
450 itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES, 422 itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES,
451 rather than `defvar', as used by `./lisp/paths.el'. For example, 423 rather than `defvar', as used by `./lisp/paths.el'. For example,
452 424
453 (setq news-inews-program "/usr/bin/inews") 425 (setq news-inews-program "/usr/bin/inews")
454 426
455 is how you would override the default value of the variable 427 is how you would override the default value of the variable
456 news-inews-program (which is "/usr/local/inews"). 428 news-inews-program.
457 429
458 Before you override a variable this way, *look at the value* that the 430 Before you override a variable this way, *look at the value* that the
459 variable gets by default! Make sure you know what kind of value the 431 variable gets by default! Make sure you know what kind of value the
460 variable should have. If you don't pay attention to what you are 432 variable should have. If you don't pay attention to what you are
461 doing, you'll make a mistake. 433 doing, you'll make a mistake.
464 Lisp code you want Emacs to load before it is dumped out. Use 436 Lisp code you want Emacs to load before it is dumped out. Use
465 site-load.el for additional libraries if you arrange for their 437 site-load.el for additional libraries if you arrange for their
466 documentation strings to be in the etc/DOC file (see 438 documentation strings to be in the etc/DOC file (see
467 src/Makefile.in if you wish to figure out how to do that). For all 439 src/Makefile.in if you wish to figure out how to do that). For all
468 else, use site-init.el. Do not load byte-compiled code which 440 else, use site-init.el. Do not load byte-compiled code which
469 was build with a non-nil value of `byte-compile-dynamic'. 441 was built with a non-nil value of `byte-compile-dynamic'.
470 442
471 If you set load-path to a different value in site-init.el or 443 If you set load-path to a different value in site-init.el or
472 site-load.el, Emacs will use *precisely* that value when it starts up 444 site-load.el, Emacs will use *precisely* that value when it starts up
473 again. If you do this, you are on your own! 445 again. If you do this, you are on your own!
474 446
475 Note that, on some systems, the code you place in site-init.el must
476 not use expand-file-name or any other function which may look
477 something up in the system's password and user information database.
478 See `./etc/PROBLEMS' for more details on which systems this affects.
479
480 The `site-*.el' files are nonexistent in the distribution. You do not 447 The `site-*.el' files are nonexistent in the distribution. You do not
481 need to create them if you have nothing to put in them. 448 need to create them if you have nothing to put in them.
482 449
483 6) Refer to the file `./etc/TERMS' for information on fields you may 450 6) Refer to the file `./etc/TERMS' for information on fields you may
484 wish to add to various termcap entries. The files `./etc/termcap.ucb' 451 wish to add to various termcap entries. (This is unlikely to be necessary.)
485 and `./etc/termcap.dat' may already contain appropriately-modified
486 entries.
487 452
488 7) Run `make' in the top directory of the Emacs distribution to finish 453 7) Run `make' in the top directory of the Emacs distribution to finish
489 building Emacs in the standard way. The final executable file is 454 building Emacs in the standard way. The final executable file is
490 named `src/emacs'. You can execute this file "in place" without 455 named `src/emacs'. You can execute this file "in place" without
491 copying it, if you wish; then it automatically uses the sibling 456 copying it, if you wish; then it automatically uses the sibling
492 directories ../lisp, ../lib-src, ../info. 457 directories ../lisp, ../lib-src, ../info.
493 458
494 Or you can "install" the executable and the other Emacs into their 459 Or you can "install" the executable and the other files into their
495 installed locations, with `make install'. By default, Emacs's files 460 installed locations, with `make install'. By default, Emacs's files
496 are installed in the following directories: 461 are installed in the following directories:
497 462
498 `/usr/local/bin' holds the executable programs users normally run - 463 `/usr/local/bin' holds the executable programs users normally run -
499 `emacs', `etags', `ctags', `b2m', `emacsclient', 464 `emacs', `etags', `ctags', `b2m', `emacsclient',
500 and `rcs-checkin'. 465 `grep-changelog', and `rcs-checkin'.
501 466
502 `/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library; 467 `/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
503 `VERSION' stands for the number of the Emacs version 468 `VERSION' stands for the number of the Emacs version
504 you are installing, like `18.59' or `19.27'. Since the 469 you are installing, like `23.1' or `23.2'. Since the
505 Lisp library changes from one version of Emacs to 470 Lisp library changes from one version of Emacs to
506 another, including the version number in the path 471 another, including the version number in the path
507 allows you to have several versions of Emacs installed 472 allows you to have several versions of Emacs installed
508 at the same time; in particular, you don't have to 473 at the same time; in particular, you don't have to
509 make Emacs unavailable while installing a new version. 474 make Emacs unavailable while installing a new version.
510 475
511 `/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC 476 `/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
512 file, the `yow' database, and other 477 file, and other architecture-independent files Emacs
513 architecture-independent files Emacs might need while 478 might need while running.
514 running. VERSION is as specified for `.../lisp'.
515 479
516 `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable 480 `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
517 programs used by Emacs that users are not expected to 481 programs used by Emacs that users are not expected to
518 run themselves. 482 run themselves.
519 `VERSION' is the number of the Emacs version you are 483 `VERSION' is the number of the Emacs version you are
520 installing, and `CONFIGURATION-NAME' is the argument 484 installing, and `CONFIGURATION-NAME' is the value
521 you gave to the `configure' program to identify the 485 deduced by the `configure' program to identify the
522 architecture and operating system of your machine, 486 architecture and operating system of your machine,
523 like `mips-dec-ultrix' or `sparc-sun-sunos'. Since 487 like `i686-pc-linux-gnu' or `sparc-sun-sunos'. Since
524 these files are specific to the version of Emacs, 488 these files are specific to the version of Emacs,
525 operating system, and architecture in use, including 489 operating system, and architecture in use, including
526 the configuration name in the path allows you to have 490 the configuration name in the path allows you to have
527 several versions of Emacs for any mix of machines and 491 several versions of Emacs for any mix of machines and
528 operating systems installed at the same time; this is 492 operating systems installed at the same time; this is
530 share the file system Emacs is installed on. 494 share the file system Emacs is installed on.
531 495
532 `/usr/local/share/info' holds the on-line documentation for Emacs, 496 `/usr/local/share/info' holds the on-line documentation for Emacs,
533 known as "info files". Many other GNU programs are 497 known as "info files". Many other GNU programs are
534 documented using info files as well, so this directory 498 documented using info files as well, so this directory
535 stands apart from the other, Emacs-specific 499 stands apart from the other, Emacs-specific directories.
536 directories. 500
537 501 `/usr/local/share/man/man1' holds the man pages for the programs installed
538 `/usr/local/man/man1' holds the man pages for the programs installed
539 in `/usr/local/bin'. 502 in `/usr/local/bin'.
540 503
541 Any version of Emacs, whether installed or not, also looks for Lisp 504 Any version of Emacs, whether installed or not, also looks for Lisp
542 files in these directories. 505 files in these directories.
543 506
596 `datadir' indicates where to put the architecture-independent 559 `datadir' indicates where to put the architecture-independent
597 read-only data files that Emacs refers to while it runs; it 560 read-only data files that Emacs refers to while it runs; it
598 defaults to /usr/local/share. We create the following 561 defaults to /usr/local/share. We create the following
599 subdirectories under `datadir': 562 subdirectories under `datadir':
600 - `emacs/VERSION/lisp', containing the Emacs Lisp library, and 563 - `emacs/VERSION/lisp', containing the Emacs Lisp library, and
601 - `emacs/VERSION/etc', containing the Emacs tutorial, the DOC 564 - `emacs/VERSION/etc', containing the tutorials, DOC file, etc.
602 file, and the `yow' database.
603 `VERSION' is the number of the Emacs version you are installing, 565 `VERSION' is the number of the Emacs version you are installing,
604 like `18.59' or `19.0'. Since these files vary from one version 566 like `23.1' or `23.2'. Since these files vary from one version
605 of Emacs to another, including the version number in the path 567 of Emacs to another, including the version number in the path
606 allows you to have several versions of Emacs installed at the 568 allows you to have several versions of Emacs installed at the
607 same time; this means that you don't have to make Emacs 569 same time; this means that you don't have to make Emacs
608 unavailable while installing a new version. 570 unavailable while installing a new version.
609 571
612 We create the following subdirectories under `libexecdir': 574 We create the following subdirectories under `libexecdir':
613 - `emacs/VERSION/CONFIGURATION-NAME', containing executable 575 - `emacs/VERSION/CONFIGURATION-NAME', containing executable
614 programs used by Emacs that users are not expected to run 576 programs used by Emacs that users are not expected to run
615 themselves. 577 themselves.
616 `VERSION' is the number of the Emacs version you are installing, 578 `VERSION' is the number of the Emacs version you are installing,
617 and `CONFIGURATION-NAME' is the argument you gave to the 579 and `CONFIGURATION-NAME' is the value deduced by the
618 `configure' program to identify the architecture and operating 580 `configure' program to identify the architecture and operating
619 system of your machine, like `mips-dec-ultrix' or 581 system of your machine, like `i686-pc-linux-gnu' or `sparc-sun-sunos'.
620 `sparc-sun-sunos'. Since these files are specific to the version 582 Since these files are specific to the version of Emacs,
621 of Emacs, operating system, and architecture in use, including 583 operating system, and architecture in use, including the
622 the configuration name in the path allows you to have several 584 configuration name in the path allows you to have several
623 versions of Emacs for any mix of machines and operating systems 585 versions of Emacs for any mix of machines and operating
624 installed at the same time; this is useful for sites at which 586 systems installed at the same time; this is useful for sites
625 different kinds of machines share the file system Emacs is 587 at which different kinds of machines share the file system
626 installed on. 588 Emacs is installed on.
627 589
628 `infodir' indicates where to put the info files distributed with 590 `infodir' indicates where to put the info files distributed with
629 Emacs; it defaults to `/usr/local/share/info'. 591 Emacs; it defaults to `/usr/local/share/info'.
630 592
631 `mandir' indicates where to put the man pages for Emacs and its 593 `mandir' indicates where to put the man pages for Emacs and its
632 utilities (like `etags'); it defaults to 594 utilities (like `etags'); it defaults to
633 `/usr/local/man/man1'. 595 `/usr/local/share/man/man1'.
634
635 `manext' gives the extension the man pages should be installed with.
636 It should contain a period, followed by the appropriate
637 digit. It defaults to `.1'. For example given the default
638 values for `mandir' and `manext', the Emacs man page would be
639 installed as `/usr/local/man/man1/emacs.1'.
640 596
641 `prefix' doesn't give a path for any specific part of Emacs; instead, 597 `prefix' doesn't give a path for any specific part of Emacs; instead,
642 its value is used to determine the defaults for all the 598 its value is used to determine the defaults for all the
643 architecture-independent path variables - `datadir', 599 architecture-independent path variables - `datadir',
644 `sharedstatedir', `infodir', and `mandir'. Its default value is 600 `sharedstatedir', `infodir', and `mandir'. Its default value is
656 `exec_prefix' serves the same purpose as `prefix', but instead 612 `exec_prefix' serves the same purpose as `prefix', but instead
657 determines the default values for the architecture-dependent 613 determines the default values for the architecture-dependent
658 path variables - `bindir' and `libexecdir'. 614 path variables - `bindir' and `libexecdir'.
659 615
660 The above variables serve analogous purposes in the makefiles for all 616 The above variables serve analogous purposes in the makefiles for all
661 GNU software; this variable is specific to Emacs. 617 GNU software; the following variable is specific to Emacs.
662 618
663 `archlibdir' indicates where Emacs installs and expects the executable 619 `archlibdir' indicates where Emacs installs and expects the executable
664 files and other architecture-dependent data it uses while 620 files and other architecture-dependent data it uses while
665 running. Its default value, based on `libexecdir' (which 621 running. Its default value, based on `libexecdir' (which
666 see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' 622 see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
672 must provide the same variable settings each time. To make the 628 must provide the same variable settings each time. To make the
673 settings persist, you can edit them into the `Makefile' in the top 629 settings persist, you can edit them into the `Makefile' in the top
674 directory, but be aware that running the `configure' program erases 630 directory, but be aware that running the `configure' program erases
675 `Makefile' and rebuilds it from `Makefile.in'. 631 `Makefile' and rebuilds it from `Makefile.in'.
676 632
677 The path for finding Lisp files is specified in src/paths.h, 633 The path for finding Lisp files is specified in src/epaths.h,
678 a file which is generated by running configure. To change the path, 634 a file which is generated by running configure. To change the path,
679 you can edit the definition of PATH_LOADSEARCH in that file 635 you can edit the definition of PATH_LOADSEARCH in that file
680 before you run `make'. 636 before you run `make'.
681 637
682 The top-level Makefile stores the variable settings it used in the 638 The top-level Makefile stores the variable settings it used in the
684 when running make in the subdirectories. 640 when running make in the subdirectories.
685 641
686 642
687 CONFIGURATION BY HAND 643 CONFIGURATION BY HAND
688 644
689 Instead of running the `configure' program, you have to perform the 645 This should not be necessary and is not recommended. Instead of
690 following steps. 646 running the `configure' program, you have to perform the following steps.
691 647
692 1) Copy `./src/config.in' to `./src/config.h'. 648 1) Copy `./src/config.in' to `./src/config.h'.
693 649
694 2) Consult `./etc/MACHINES' to see what configuration name you should 650 2) Consult `./etc/MACHINES' to see what configuration name you should
695 use for your system. Look at the code of the `configure' script to 651 use for your system. Look at the code of the `configure' script to
699 the appropriate system and architecture description files. 655 the appropriate system and architecture description files.
700 656
701 2) Edit `./src/config.h' to set the right options for your system. If 657 2) Edit `./src/config.h' to set the right options for your system. If
702 you need to override any of the definitions in the s/*.h and m/*.h 658 you need to override any of the definitions in the s/*.h and m/*.h
703 files for your system and machine, do so by editing config.h, not by 659 files for your system and machine, do so by editing config.h, not by
704 changing the s/*.h and m/*.h files. Occasionally you may need to 660 changing the s/*.h and m/*.h files.
705 redefine parameters used in `./lib-src/movemail.c'.
706 661
707 3) Create src/Makefile and lib-src/Makefile from the corresponding 662 3) Create src/Makefile and lib-src/Makefile from the corresponding
708 `Makefile.in' files. First copy `Makefile.in' to `Makefile.c', 663 `Makefile.in' files. First copy `Makefile.in' to `Makefile.c',
709 then edit in appropriate substitutions for the @...@ constructs, 664 then edit in appropriate substitutions for the @...@ constructs,
710 and then copy the shell commands near the end of `configure' 665 and then copy the shell commands near the end of `configure'
711 that run cpp to construct `Makefile'. 666 that run cpp to construct `Makefile'.
712 667
713 4) Create `Makefile' files in various other directories 668 4) Create `Makefile' files in various other directories from the
714 from the corresponding `Makefile.in' files. This isn't so hard, 669 corresponding `Makefile.in' files. This isn't so hard, just a matter
715 just a matter of substitution. 670 of editing in appropriate substitutions for the @...@ constructs.
716 671
717 The `configure' script is built from `configure.in' by the `autoconf' 672 The `configure' script is built from `configure.in' by the `autoconf'
718 program. You need version 2.51 or newer of `autoconf' to rebuild 673 program. You need at least the version of autoconf specified in the
719 `configure'. 674 AC_PREREQ(...) command to rebuild `configure' from `configure.in'.
720 675
721 BUILDING GNU EMACS BY HAND 676 BUILDING GNU EMACS BY HAND
722 677
723 Once Emacs is configured, running `make' in the top directory performs 678 Once Emacs is configured, running `make' in the top directory performs
724 the following steps. 679 the following steps.
725 680
726 1) Run `make src/paths.h' in the top directory. This produces 681 1) Run `make epaths-force' in the top directory. This produces
727 `./src/paths.h' from the template file `./src/paths.in', changing 682 `./src/epaths.h' from the template file `./src/epaths.in', changing
728 the paths to the values specified in `./Makefile'. 683 the paths to the values specified in `./Makefile'.
729 684
730 2) Go to directory `./lib-src' and run `make'. This creates 685 2) Go to directory `./lib-src' and run `make'. This creates
731 executables named `ctags' and `etags' and `make-docfile' and 686 executables named `ctags' and `etags' and `make-docfile' and
732 `digest-doc' and `test-distrib'. And others. 687 `digest-doc' and `test-distrib'. And others.
733 688
734 3) Go to directory `./src' and Run `make'. This refers to files in 689 3) Go to directory `./src' and run `make'. This refers to files in
735 the `./lisp' and `./lib-src' subdirectories using names `../lisp' and 690 the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
736 `../lib-src'. 691 `../lib-src'.
737 692
738 This creates a file `./src/emacs' which is the runnable Emacs, 693 This creates a file `./src/emacs' which is the runnable Emacs,
739 which has another name that contains a version number. 694 which has another name that contains a version number.
741 696
742 It also creates a file in `./etc' whose name is `DOC' followed by the 697 It also creates a file in `./etc' whose name is `DOC' followed by the
743 current Emacs version. This file contains documentation strings for 698 current Emacs version. This file contains documentation strings for
744 all the functions in Emacs. Each time you run make to make a new 699 all the functions in Emacs. Each time you run make to make a new
745 emacs, a new DOC file with a new name is made. You must keep the DOC 700 emacs, a new DOC file with a new name is made. You must keep the DOC
746 file for an Emacs version as long as you keep using that Emacs 701 file for an Emacs version as long as you keep using that Emacs version.
747 version.
748 702
749 703
750 INSTALLATION BY HAND 704 INSTALLATION BY HAND
751 705
752 The steps below are done by running `make install' in the main 706 The steps below are done by running `make install' in the main
753 directory of the Emacs distribution. 707 directory of the Emacs distribution.
754 708
755 1) Copy `./lisp' and its subdirectories, `./etc', and the executables 709 1) Copy `./lisp' and its subdirectories, `./etc', and the executables
756 in `./lib-src' to their final destinations, as selected in `./src/paths.h'. 710 in `./lib-src' to their final destinations, as selected in `./src/epaths.h'.
757 711
758 Strictly speaking, not all of the executables in `./lib-src' need be copied. 712 Strictly speaking, not all of the executables in `./lib-src' need be copied.
759 - The programs `fakemail', `hexl', `movemail', `profile', `rcs2log', 713 - The programs `fakemail', `hexl', `movemail', `profile', `rcs2log',
760 and `vcdiff' are used by Emacs; they do need to be copied. 714 and `vcdiff' are used by Emacs; they do need to be copied.
761 - The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin' 715 - The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
782 736
783 4) Copy the programs `b2m', `emacsclient', `ctags', `etags', and 737 4) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
784 `rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are 738 `rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are
785 intended for users to run. 739 intended for users to run.
786 740
787 5) Copy the man pages in `./etc' for emacs, ctags, and etags into the 741 5) Copy the man pages in `./doc/man' into the appropriate man directory.
788 appropriate man directories.
789 742
790 6) The files in the `./src' subdirectory, except for `emacs', are not 743 6) The files in the `./src' subdirectory, except for `emacs', are not
791 used by Emacs once it is built. However, it is very desirable to keep 744 used by Emacs once it is built. However, it is very desirable to keep
792 the source on line for debugging. 745 the source on line for debugging.
793 746
794 747
795 PROBLEMS 748 PROBLEMS
796 749
797 See the file PROBLEMS in etc subdirectory for a list of various 750 See the file `./etc/PROBLEMS' for a list of various problems sometimes
798 problems sometimes encountered, and what to do about them. 751 encountered, and what to do about them.
799 752
800 This file is part of GNU Emacs. 753 This file is part of GNU Emacs.
801 754
802 GNU Emacs is free software: you can redistribute it and/or modify 755 GNU Emacs is free software: you can redistribute it and/or modify
803 it under the terms of the GNU General Public License as published by 756 it under the terms of the GNU General Public License as published by