XEmacs 21.2.28 "Hermes".
[chise/xemacs-chise.git.1] / INSTALL
1 XEmacs Installation Guide
2 Copyright (c) 1994, 1995, 1996 Board of Trustees, University of Illinois
3 Copyright (c) 1994-1999 Free Software Foundation, Inc.
4
5 Synched up with: FSF 19.30.
6
7    Permission is granted to anyone to make or distribute verbatim copies
8    of this document as received, in any medium, provided that the
9    copyright notice and permission notice are preserved,
10    and that the distributor grants the recipient permission
11    for further redistribution as permitted by this notice.
12
13    Permission is granted to distribute modified versions
14    of this document, or of portions of it,
15    under the above conditions, provided also that they
16    carry prominent notices stating who last changed them,
17    and that any new or changed statements about the activities
18    of the Free Software Foundation are approved by the Foundation.
19
20
21 BUILDING AND INSTALLATION (Unix and Cygwin, see the file nt/README
22 for instructions on building under Microsoft Windows):
23
24 1) Make sure your system has enough swapping space allocated to handle
25    a program whose pure code is 900k bytes and whose data area is at
26    least 400k and can reach 8Mb or more. Note that a typical XEmacs
27    build is much bigger. If the swapping space is
28    insufficient, you will get an error in the command `temacs -batch
29    -l loadup dump', found in `./src/Makefile.in.in', or possibly when
30    running the final dumped XEmacs.
31
32    Verify that your users have a high enough stack limit. On some
33    systems such as OpenBSD and OSF/Tru64 the default is 2MB which is
34    too low. See 'PROBLEMS' for details.
35
36 Building XEmacs requires about 100 Mb of disk space (including the
37 XEmacs sources).  Once installed, XEmacs occupies between 20 and 100 Mb
38 in the file system where it is installed; this includes the executable files,
39 Lisp libraries, miscellaneous data files, and on-line documentation. The
40 exact amount depends greatly on the number of extra lisp packages that are
41 installed 
42
43 XEmacs requires an ANSI C compiler, such as GCC.  If you wish to build
44 the documentation yourself, you will need at least version 1.68 of
45 makeinfo (GNU texinfo-3.11).
46
47
48 2) Decide on what other software packages you would like to use with
49 XEmacs, but are not yet available on your system.  On some systems,
50 Motif and CDE are optional additions.  On Solaris, the SUNWaudmo
51 package enables native sound support.  There are also a number of free
52 software packages that XEmacs can use.  If these are not yet available
53 on your system, obtain, build and install those external packages
54 before building XEmacs.  The packages XEmacs can use are:
55
56    Xaw3d, XPM, JPEG, compface, PNG, zlib, GNU DBM, Berkeley DB, socks,
57    term, NAS, Canna, Kinput2, SJ3, Wnn.
58
59 You can get (most of) them from the XEmacs ftp site at
60 ftp://ftp.xemacs.org/pub/xemacs/aux
61
62 If you want users on other systems to be able to use the XEmacs you
63 have built, try to build those packages so that the generated
64 libraries are statically linked.
65
66 Use the --site-includes and --site-libraries options when building
67 XEmacs to allow configure to find the external software packages.
68 If you link with dynamic (``.so'') external package libraries, which
69 is not recommended, you will also need to add the library directories
70 to the --site-runtime-libraries option. For your convenience these can
71 be set together by using the --with-site-prefix command. This will set
72 these variables as needed assuming your libraries are organised as a
73 typical /usr tree.
74
75 3) [N.B. Most of this section can be done during or after the
76 compilation of the core source code, but is present early to catch
77 your attention.]
78
79 Decide what Initial Lisp you need with XEmacs. XEmacs is
80 distributed separately from most of its runtime environment. This is
81 done to make it easier for administrators to tune an installation for
82 what the local users need. Note that while XEmacs will compile and
83 install without any packages present at least some additional lisp
84 packages are needed to bring XEmacs up to "normal" editor
85 functionality. Installation and upgrading of the packages can be done
86 almost automatically when from inside XEmacs when it has been compiled
87 and installed.
88
89 More information and suggestions for which packages to install see the
90 file README.packages.
91
92 IMPORTANT! The file README.packages contain information vital to have
93 a fully working XEmacs. This information was not included in this file
94 only because it is too large for this terse INSTALL.  Please read
95 README.packages now!
96
97 By default, packages will be searched for in the path
98
99 ~/.xemacs::$prefix/lib/xemacs-${version}/mule-packages:$prefix/lib/xemacs/mule-packages:$prefix/lib/xemacs-${version}/xemacs-packages:$prefix/lib/xemacs/xemacs-packages
100
101 This may be changed by specifying a different value with the
102 --package-path configuration option.
103
104 4) In the top level directory of the XEmacs distribution, run the
105    program `configure' as follows:
106
107     ./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ...
108
109 Almost always, you should let `configure' (actually the shell script
110 `config.guess') guess your host type, by omitting the
111 CONFIGURATION-NAME argument.  If you like to experiment, specify a
112 configuration name in the form MACHINE-VENDOR-OPSYS, for example:
113
114 sparc-sun-solaris2.6
115
116 See config.guess and configure.in for valid values for MACHINE,
117 VENDOR, and OPSYS.  Also check `./etc/MACHINES' for advice on building
118 on particular machines.
119
120 If you don't want X support, specify `--without-x'.  If you omit this
121 option, `configure' will try to autodetect whether your system has X,
122 and arrange to use it if present.
123
124 The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
125 process where the compiler should look for the include files and
126 object libraries used with the X Window System.  Normally, `configure'
127 is able to find them; these options are necessary if you have your X
128 Window System files installed in unusual places.
129
130 The `--site-includes=DIR' and `--site-libraries=DIR' options allow you
131 to specify additional places the compiler should look for include
132 files and object libraries.  You may specify multiple DIR's by
133 enclosing the list in quotes.  All the external packages you want to
134 use with XEmacs (e.g. xpm, wnn, ...) described later should have their
135 include and library directories defined using these options.
136
137 The `--site-runtime-libraries=DIR' option specifies directories to
138 search for shared libraries at run time.  This may be necessary if you
139 link with dynamic libraries that are installed in non-standard
140 directories, or if you expect some of the libraries used to build
141 XEmacs to be in a different directory at run time than at build time.
142 Usually this will add a `-R' to each directory specified and use that
143 when linking XEmacs.  If you use this option, you must specify ALL of
144 the directories containing shared libraries at run time, including
145 system directories.
146
147 Rationale: Some people think that directories in --site-libraries
148 should be automatically used to update --site-runtime-libraries.
149 Here's a real-life scenario that explains why this is not done: You
150 build binaries for your company using static libs in
151 /net/toy/hack/lib.  XEmacs adds /net/toy/hack/lib to the runpath of
152 the executable you've built.  Since there are only static libs there,
153 the system runtime loader will look in this dir, and ignore it,
154 causing only a .01 second delay in starting XEmacs.  You leave the
155 company for a job at a small Silicon Valley startup.  Time passes.
156 The next guy who inherits your machine objects to working on a machine
157 named `toy', and gets the sysadmin to rename the machine `godzilla'.
158 The SA forgets to remove the old entry for `toy' from the hosts file.
159 Now the system loader will still try to access /net/toy/, and the
160 automounter will hang trying to access /net/toy.  XEmacs suddenly
161 takes 30 seconds longer to start up, no one can figure out why, and
162 everyone at your old company curses your name, thinking that you've
163 put a time bomb into XEmacs.  And they're right!
164
165 The `--with-gcc' option specifies that the build process should
166 compile XEmacs using GCC.  The `--compiler' option allows you to
167 specify some other compiler to be used to compile XEmacs.  If neither
168 option is specified, the environment variable CC is used instead.
169 Otherwise the compiler will then default to 'cc'.
170
171 The `--cflags' option specifies the CFLAGS the build process should
172 use when compiling XEmacs.  Otherwise the value of the environment
173 variable CFLAGS is consulted.  If that is also undefined, CFLAGS
174 defaults to "-g -O" for gcc and "-g" for all other compilers.
175
176 The `--dynamic' option specifies that configure should try to link
177 emacs dynamically rather than statically.
178
179 The `--const-is-losing' option is for use if you have trouble
180 compiling due to the `const' storage class in C.  This is defined by
181 default.  Most users should have no need to change this.
182
183 You can build XEmacs for several different machine types from a single
184 source directory.  To do this, you must use a version of `make' that
185 supports the `VPATH' variable, such as GNU `make'.  Make separate
186 build directories for the different configuration types, and in each
187 one, run the XEmacs `configure' script.  `configure' looks for the
188 Emacs source code in the directory that `configure' is in.
189
190 The `--prefix=PREFIXDIR' option specifies where the installation process
191 should put XEmacs and its data files.  This defaults to `/usr/local'.
192 - XEmacs (and the other utilities users run) go in PREFIXDIR/bin
193   (unless the `--exec-prefix' option says otherwise).
194 - The architecture-independent files go in PREFIXDIR/lib/xemacs-VERSION
195   (where VERSION is the version number of XEmacs, like `21.0').
196 - The architecture-dependent files go in
197   PREFIXDIR/lib/xemacs-VERSION/CONFIGURATION-NAME
198   (where CONFIGURATION-NAME is the host type, like mips-dec-ultrix4.2),
199   unless the `--exec-prefix' option says otherwise.
200
201 The `--exec-prefix=EXECDIR' option allows you to specify a separate
202 portion of the directory tree for installing architecture-specific
203 files, like executables and utility programs.  If specified,
204 - XEmacs (and the other utilities users run) go in EXECDIR/bin, and
205 - The architecture-dependent files go in
206   EXECDIR/lib/xemacs-VERSION/CONFIGURATION-NAME.
207 EXECDIR/bin should be a directory that is normally in users' PATHs.
208
209 For example, the command
210
211     ./configure mips-dec-ultrix --with-x11=yes
212
213 configures XEmacs to build for a DECstation running Ultrix, with
214 support for the X11 window system.
215
216 The `--with-menubars=TYPE' option allows you to specify which X
217 toolkit you wish to use for the menubar.  The valid options are
218 `lucid', `motif' and `no'.  The default is `lucid' which is a
219 Motif-lookalike menubar.  We highly recommend its usage over the real
220 Motif menubar. (In fact, the Motif menubar is currently broken.)  If
221 `no' is specified then support for menubars will not be compiled in.
222
223 The `--with-scrollbars=TYPE' option allows you to specify which X
224 toolkit you wish to use for the scrollbars.  The valid options are
225 `lucid', `motif', `athena', `athena3d', and `no'.  The default is
226 `lucid' which is a Motif-lookalike scrollbar.  If `no' is specified
227 then support for scrollbars will not be compiled in.
228
229 The `--with-dialogs=TYPE' option allows you to specify which X toolkit
230 you wish to use for the dialog boxes.  The valid options are `athena',
231 `athena3d', `motif, and `no.  The `lucid' option is accepted and will
232 result in the `athena' toolkit being used.  If the Motif toolkit can be
233 found the default is `motif'.  Otherwise, the default is `athena'.  If
234 `no' is specified then support for dialog boxes will not be compiled
235 in.
236
237 The `--with-toolbars' option allows you to enable or disable toolbar
238 support.  The default is `yes' as long as support for a windowing
239 system is included.
240
241 The `--with-xpm' option specifies that XEmacs should support X11
242 Pixmaps.  `configure' will attempt to detect if you have the Xpm
243 libraries and define `--with-xpm' for you.
244
245 The `--with-xface' option specifies that XEmacs should support
246 X-Faces.  `configure' will attempt to detect if you have the compface
247 library and define `--with-xface' for you.
248
249 The `--with-database' option specifies that XEmacs should be built
250 with additional database support.  The valid options are `no' or a
251 comma-separated list of one or more of `dbm', `gnudbm' or `berkdb'.
252 `configure' will attempt to detect the necessary libraries and header
253 files and define `--with-database' for you.
254
255 The `--with-socks' option specifies that XEmacs should be built with
256 SOCKS support.  This requires the libsocks library.
257
258 The `--with-tooltalk' option specifies that XEmacs should be built
259 with ToolTalk support for interconnecting with other applications.
260 ToolTalk is not yet supported on all architectures.  If you use this
261 option, you should have the tooltalk package (see etc/PACKAGES)
262 installed prior to building XEmacs.
263
264 The `--with-sparcworks' option specifies that XEmacs should be built
265 with support for Sun Sparcworks 3.0.1 and up (including Sun WorkShop).
266 This functionality is only of use on SunOS 4.1.x and Solaris 2.x
267 systems.  If you use this option, you should have the Sun package (see
268 etc/PACKAGES) installed prior to building XEmacs.
269
270 The `--with-cde' option allows you to enable or disable CDE drag and
271 drop support.  `configure' will attempt to detect this option and
272 define `--with-cde' for you.
273
274 The `--with-offix' option allows you to enable or disable OffiX drag
275 and drop support.  This requires no external library support, so if
276 X11 support is available, then this option defaults to `yes'.  OffiX
277 support can be explicitly disabled via the `--with-offix=no' option.
278
279 The `--external-widget' option specifies that XEmacs should be built
280 with support for being used as a widget by other X11 applications.
281 This functionality should be considered beta.
282
283 The `--without-xmu' option can be used if your vendor doesn't ship
284 the Xmu library.
285
286 The `--puresize' option can be used to change the amount of purespace
287 allocated for the dumped XEmacs.  As of XEmacs 20.1 usage of this
288 parameter is deprecated and will be ignored.
289
290 The `--with-sound=TYPE' option specifies that XEmacs should be built
291 with sound support.  Native (`--with-sound=native') sound support is
292 currently available only on Sun SparcStations, SGI's, HP9000s, and
293 systems (such as Linux) with soundcard.h.  Network Audio Support (NAS)
294 (`--with-sound=nas' or `--with-sound=both') is an extension to X that
295 you may or may not have for your system.  For NAS, you will probably
296 need to provide the paths to the nas include and library directories
297 to configure.  If `--with-sound' is not specified, `configure' will
298 attempt to determine if your configuration supports native sound and
299 define --with-sound for you.  If your native sound library is not in a
300 standard location you can specify it with the `--native-sound-lib=LIB'
301 flag.  For Linux, `/dev/audio' is required for SunAudio files and
302 `/dev/dsp' is required for raw data and WAVE format files.
303
304 The `--rel-alloc' option can be used to either enable or disable use
305 of the relocating allocator.  Turning on --rel-alloc will allow XEmacs
306 to return unused memory to the operating system, thereby reducing its
307 memory footprint.  However, it may make XEmacs runs more slowly,
308 especially if your system's `mmap' implemntation is missing or
309 inefficient.  Generally, it's best to go with the default
310 configuration for your system.  You can tweak this based on how you
311 use XEmacs, and the memory and cpu resources available on your system.
312
313 The `--with-system-malloc' option can be use to either enable or
314 disable use of the system malloc.  Generally, it's best to go with the
315 default configuration for your system.  Note that on many systems
316 using the system malloc disables the use of the relocating allocator.
317
318 The `--with-debug-malloc' option can be used to link a special debugging
319 version of malloc.  Debug Malloc is not included with XEmacs, is
320 intended for use only by the developers and may be obtained from
321 <URL:http://www.letters.com/dmalloc/>.
322
323 The `--debug' and `--error-checking' options are intended for use only
324 by the developers.  `--debug' adds code to be compiled in for
325 performing various tests.  `--error-checking' adds additional tests to
326 many of the commonly used macros.
327
328 The `--verbose' and `--extra-verbose' options are intended for use
329 only by the developers.  `--verbose' causes the results of all
330 configure tests to be displayed.  `--extra-verbose' displays
331 additional information, useful for debugging.  Another help for
332 determining configure failures is the file `config.log', which
333 contains the results of the compile and link tests used by configure.
334
335 The `--with-mule' option enables (MUlti-Lingual Emacs) support, needed
336 to suport non-Latin-1 (including Asian) languages.  The Mule support
337 is not yet as stable or efficient as the `Latin1' support.   Enabling
338 Mule support requires the mule-base package installed prior to
339 building XEmacs.  The following options require Mule support:
340
341 The `--with-xim' option enables use of the X11 XIM mechanism to allow
342 an input method to input text into XEmacs.  The input method is shared
343 among all the X applications sharing an X display and using the same
344 language.  The XIM support comes in two flavors: `motif' and `xlib'.
345 The Motif support (the XmIm* functions) is preferred when available.
346 The xlib XIM support works reasonably well so long as the X11 libraries
347 are recent enough.  It has been fairly well tested on Linux with glibc
348 2.0.5 and 2.0.6 and Kinput2 as an XIM server.  In this configuration
349 X11 must be recompiled with X_LOCALE defined because glibc is lacking
350 localization for Japanese.  The XIM support defaults to `no' except
351 when Motif is detected where it is stable with OSF libraries.  The XIM
352 support in Lesstif (a Free Motif replacement) does not work as of
353 v0.82.  If you enable this option, you will probably wish to install
354 the `locale' package which contains localized Splash screens and
355 Menubars.
356
357 The `--with-xfs' option enables use of a multilingual Menubar.  At the
358 present time, only Japanese and French locales are supported.  In
359 order to use a multilingual Menubar you must have the `locale' package
360 installed.  The `locale' package does not have to be installed when
361 building XEmacs.
362
363 The `--with-canna' option enables the use of the Canna Japanese input
364 method.  This is stable code and fairly well tested.  In order to use
365 it, you will have to have the Canna server installed and running.
366 Canna versions 3.2pl2 and 3.5b2 are known to work.  Version 3.2pl2 is
367 considered most stable than version 3.5b2.  If Canna is already
368 installed, configure will autodetect it, so you never need to
369 explicitly use this option unless your Canna libraries are somewhere
370 strange.  Canna run time support is currently bundled with the
371 `mule-base' package so there is nothing additional to install in order
372 to use it.
373
374 The `--with-wnn' and `--with-wnn6' options are for compiling with the Wnn
375 multi-language input method.  `--with-wnn' is for compiling with Wnn-4.2,
376 the Free version of WNN.  `--with-wnn6' is for compiling against WNN6,
377 the commercial version of WNN available from OMRON Corporation.  This is
378 stable code and fairly well tested.  In order to build with this
379 option, you will need to have the `egg-its' lisp package already
380 installed.
381
382 Please note that it is safe to build with as many of the options
383 `--with-xim', `--with-canna' and `--with-wnn' as your system
384 supports.
385
386 `configure' doesn't do any compilation or installation itself.  It
387 just creates the files that influence those things: `./src/config.h',
388 and all the Makefile's in the build tree.
389
390 The `--with-pop', `--with-hesiod', and `--with-kerberos' options are used
391 in conjunction with movemail.  As of XEmacs 20.1, movemail is identical
392 to the one used in Emacs.
393
394 When it is done, `configure' prints a description of what it did and
395 creates a shell script `config.status' which, when run, recreates the
396 same configuration.  If `configure' exits with an error after
397 disturbing the status quo, it removes `config.status'.
398
399 5) Look at `./lisp/paths.el'; if some of those values are not right
400 for your system, set up the file `./lisp/site-init.el' with XEmacs
401 Lisp code to override them; it is not a good idea to edit paths.el
402 itself.  YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES,
403 rather than `defvar', as used by `./lisp/paths.el'.  For example,
404
405      (setq news-inews-program "/usr/bin/inews")
406
407 is how you would override the default value of the variable
408 news-inews-program (which is "/usr/local/inews").
409
410 Before you override a variable this way, *look at the value* that the
411 variable gets by default!  Make sure you know what kind of value the
412 variable should have.  If you don't pay attention to what you are
413 doing, you'll make a mistake.
414
415 Things may malfunction if the variable `directory-abbrev-alist' is not
416 set up to translate "temporary" automounter mount points into the
417 canonical form.  XEmacs tries to detect how your automounter is
418 configured.  If you have an unusual automounter configuration that
419 XEmacs cannot detect, you may need to change the value of
420 `directory-abbrev-alist'.
421
422 6) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
423 Lisp code you want XEmacs to load before it is dumped out.  Use
424 site-load.el for additional libraries if you arrange for their
425 documentation strings to be in the lib-src/DOC file (see
426 src/Makefile.in.in if you wish to figure out how to do that).  For all
427 else, use site-init.el.
428
429 If you set load-path to a different value in site-init.el or
430 site-load.el, XEmacs will use *precisely* that value when it starts up
431 again.  If you do this, you are on your own!
432
433 Note that, on some systems, the code you place in site-init.el must
434 not use expand-file-name or any other function which may look
435 something up in the system's password and user information database.
436 See `./PROBLEMS' for more details on which systems this affects.
437
438 The `site-*.el' files are nonexistent in the distribution.  You do not
439 need to create them if you have nothing to put in them.
440
441 7) Refer to the file `./etc/TERMS' for information on fields you may
442 wish to add to various termcap entries.  The files `./etc/termcap.ucb'
443 and `./etc/termcap.dat' may already contain appropriately-modified
444 entries.
445
446 8) Run `make' in the top directory of the XEmacs distribution to finish
447 building XEmacs in the standard way.  The final executable file is
448 named `src/emacs'.  You can execute this file "in place" without
449 copying it, if you wish; then it automatically uses the sibling
450 directories ../lisp, ../lib-src, ../info.
451
452 Or you can "install" the executable and the other XEmacs into their
453 installed locations, with `make install'.  By default, XEmacs's files
454 are installed in the following directories:
455
456 By default, XEmacs installs its files in the following directories:
457
458 `/usr/local/bin' holds the executable programs users normally run -
459                 `xemacs', `etags', `ctags', `b2m', `emacsclient', `ellcc',
460                 `gnuclient', `gnudoit', `gnuattach', and `rcs-checkin'.
461
462 `/usr/local/lib/xemacs-VERSION/lisp' holds the Emacs Lisp libraries;
463                 `VERSION' stands for the number of the XEmacs version
464                 you are installing, like `18.59' or `19.14'.  Since
465                 the lisp libraries change from one version of XEmacs to
466                 another, including the version number in the path
467                 allows you to have several versions of XEmacs installed
468                 at the same time; this means that you don't have to
469                 make XEmacs unavailable while installing a new version.
470
471                 XEmacs searches for its lisp files in these
472                 directories, and then in
473                 `/usr/local/lib/xemacs/site-lisp/*'.
474
475 `/usr/local/lib/xemacs-VERSION/etc' holds the XEmacs tutorial, the
476                 `yow' database, and other architecture-independent
477                 files XEmacs might need while running.  VERSION is as
478                 specified for `.../lisp'.
479
480 `/usr/local/lib/xemacs/lock' contains files indicating who is
481                 editing what, so XEmacs can detect editing clashes
482                 between users.
483
484 `/usr/local/lib/xemacs-VERSION/CONFIGURATION-NAME' contains executable
485                 programs used by XEmacs that users are not expected to
486                 run themselves, and the DOC file. `VERSION' is the
487                 number of the XEmacs version you are installing, and
488                 `CONFIGURATION-NAME' is the host type of your system.
489                 Since these files are specific to the version of
490                 XEmacs, operating system, and architecture in use,
491                 including the configuration name in the path allows
492                 you to have several versions of XEmacs for any mix of
493                 machines and operating systems installed at the same
494                 time; this is useful for sites at which different
495                 kinds of machines share the file system XEmacs is
496                 installed on.
497
498 `/usr/local/lib/xemacs-VERSION/CONFIGURATION-NAME/modules' holds the Emacs
499                 dynamically loadable modules.  These are special programs
500                 typically written in C that can be loaded in much the same
501                 way that Lisp packages are.  Not all systems support
502                 dynamic modules, so do not be alarmed if this directory
503                 does not exist or is empty.
504
505                 XEmacs searches for modules in this directory, or any
506                 sub-directory of it, and then in
507                 `/usr/local/lib/xemacs/site-modules/*'.
508
509 `/usr/local/lib/xemacs-VERSION/info' holds the on-line documentation
510                 for XEmacs, known as "info files".
511
512 `/usr/local/man/man1' holds the man pages for the programs installed
513                 in `/usr/local/bin'.
514
515 If these directories are not what you want, you can specify where to
516 install XEmacs's libraries and data files or where XEmacs should search
517 for its lisp files by giving values for `make' variables as part of
518 the command.  See the section below called `MAKE VARIABLES' for more
519 information on this.
520
521 Using GNU Make allows for simultaneous builds with and without the
522 --srcdir option.
523
524 9) If your system uses lock files to interlock access to mailer inbox
525 files, then you might need to make the movemail program setuid or
526 setgid to enable it to write the lock files.  We believe this is safe.
527 The setuid/setgid bits need not be set on any other XEmacs-related
528 executables.
529
530 10) You are done with the hard part!  You can remove executables and
531 object files from the build directory by typing `make clean'.  To also
532 remove the files that `configure' created (so you can compile XEmacs
533 for a different configuration), type `make distclean'.
534
535 11) You should now go to the XEmacs web page at http://www.xemacs.org/
536 and decide what additional Lisp support you wish to have.
537
538 MAKE VARIABLES
539
540 You can change where the build process installs XEmacs and its data
541 files by specifying values for `make' variables as part of the `make'
542 command line.  For example, if you type
543
544     make install bindir=/usr/local/gnubin
545
546 the `bindir=/usr/local/gnubin' argument indicates that the XEmacs
547 executable files should go in `/usr/local/gnubin', not
548 `/usr/local/bin'.
549
550 Here is a complete list of the variables you may want to set.
551
552 `bindir' indicates where to put executable programs that users can
553         run.  This defaults to /usr/local/bin.
554
555 `datadir' indicates where to put the architecture-independent
556         read-only data files that XEmacs refers to while it runs; it
557         defaults to /usr/local/lib.  We create the following
558         subdirectories under `datadir':
559         - `xemacs-VERSION/lisp', containing the XEmacs lisp libraries, and
560
561         - `xemacs-VERSION/etc', containing the XEmacs tutorial and the
562                 `yow' database.
563         `VERSION' is the number of the XEmacs version you are installing,
564         like `18.59' or `19.14'.  Since these files vary from one version
565         of XEmacs to another, including the version number in the path
566         allows you to have several versions of XEmacs installed at the
567         same time; this means that you don't have to make XEmacs
568         unavailable while installing a new version.
569
570 `statedir' indicates where to put architecture-independent data files
571         that XEmacs modifies while it runs; it defaults to
572         /usr/local/lib as well.  We create the following
573         subdirectories under `statedir':
574         - `xemacs/lock', containing files indicating who is editing
575                 what, so XEmacs can detect editing clashes between
576                 users.
577
578 `libdir' indicates where to put architecture-specific data files that
579         XEmacs refers to as it runs; it too defaults to `/usr/local/lib'.
580         We create the following subdirectories under `libdir':
581         - `xemacs-VERSION/CONFIGURATION-NAME', containing executable
582                 programs used by XEmacs that users are not expected to run
583                 themselves and the DOC file.
584         `VERSION' is the number of the XEmacs version you are installing,
585         and `CONFIGURATION-NAME' is the host type of your system.
586         Since these files are specific to the version of XEmacs,
587         operating system, and architecture in use, including the
588         configuration name in the path allows you to have several
589         versions of XEmacs for any mix of machines and operating
590         systems installed at the same time; this is useful for sites
591         at which different kinds of machines share the file system
592         XEmacs is installed on.
593
594 `infodir' indicates where to put the info files distributed with
595         XEmacs; it defaults to `/usr/local/lib/xemacs-VERSION/info'.
596
597 `mandir' indicates where to put the man pages for XEmacs and its
598         utilities (like `etags'); it defaults to
599         `/usr/local/man/man1'.
600
601 `prefix' doesn't give a path for any specific part of XEmacs; instead,
602         its value is used to determine the defaults for all the
603         architecture-independent path variables - `datadir',
604         `statedir', `infodir', and `mandir'.  Its default value is
605         `/usr/local'; the other variables add on `lib' or `man' to it
606         by default.
607
608         For example, suppose your site generally places GNU software
609         under `/usr/users/software/gnusoft' instead of `/usr/local'.
610         By including
611             `prefix=/usr/users/software/gnusoft'
612         in the arguments to `make', you can instruct the build process
613         to place all of the XEmacs data files in the appropriate
614         directories under that path.
615
616 `exec_prefix' serves the same purpose as `prefix', but instead
617         determines the default values for the architecture-dependent
618         path variables - `bindir' and `libdir'.
619
620 The above variables serve analogous purposes in the makefiles for all
621 GNU software; here are some variables specific to XEmacs.
622
623 `lispdir' indicates where XEmacs installs and expects its lisp
624         libraries.  Its default value, based on `datadir' (see above),
625         is `/usr/local/lib/xemacs-VERSION/lisp' (where `VERSION' is as
626         described above).
627
628 `sitelispdir' indicates where XEmacs should search for lisp libraries
629         specific to your site. XEmacs checks them in order before
630         checking `lispdir'.  Its default value, based on `datadir'
631         (see above), is `/usr/local/lib/xemacs/site-lisp'.
632
633 `etcdir' indicates where XEmacs should install and expect the rest of
634         its architecture-independent data, like the tutorial and yow
635         database.  Its default value, based on `datadir'
636         (see above), is `/usr/local/lib/xemacs-VERSION/etc' (where
637         `VERSION' is as described above).
638
639 `lockdir' indicates the directory where XEmacs keeps track of its
640         locking information.  Its default value, based on `statedir'
641         (see above), is `/usr/local/lib/xemacs/lock'.
642
643 `archlibdir' indicates where XEmacs installs and expects the
644         executable files and other architecture-dependent data it uses
645         while running.  Its default value, based on `libdir' (see
646         above), is `/usr/local/lib/xemacs-VERSION/CONFIGURATION-NAME'
647         (where VERSION and CONFIGURATION-NAME are as described above).
648
649 `docdir' indicates where to put Lisp documentation strings that XEmacs
650         refers to as it runs.  It defaults the value of `archlibdir'
651         (see above).
652
653 `moduledir' indicates where XEmacs installs and expects to find
654         any dynamic modules.  Its default value, based on
655         `archlibdir' (see above) is
656         `/usr/local/lib/xemacs-VERSION/CONFIGURATION-NAME/modules'
657         (where VERSION and CONFIGURATION-NAME are as described above).
658         By their very nature, dynamic loadable modules are architecture-
659         dependant, and care should be taken not to set this directory
660         to a system- or architecture-independant directory.
661
662 Remember that you must specify any variable values you need each time
663 you run `make' in the top directory.  If you run `make' once to build
664 xemacs, test it, and then run `make' again to install the files, you
665 must provide the same variable settings each time.  To make the
666 settings persist, you can edit them into the `Makefile' in the top
667 directory, but be aware that running the `configure' program erases
668 `Makefile' and rebuilds it from `Makefile.in'.
669
670 The top-level Makefile stores the variable settings it used in the
671 Makefiles for the subdirectories, so you don't have to specify them
672 when running make in the subdirectories.
673
674
675 CONFIGURATION BY HAND
676
677 Instead of running the `configure' program, you have to perform the
678 following steps.
679
680 1) Copy `./src/config.h.in' to `./src/config.h'.
681
682 2) Consult `./etc/MACHINES' to see what configuration name you should
683 use for your system.  Look at the code of the `configure' script to
684 see which operating system and architecture description files from
685 `src/s' and `src/m' should be used for that configuration name.  Edit
686 `src/config.h', and change the two `#include' directives to include
687 the appropriate system and architecture description files.
688
689 3) Edit `./src/config.h' to set the right options for your system.  If
690 you need to override any of the definitions in the s/*.h and m/*.h
691 files for your system and machine, do so by editing config.h, not by
692 changing the s/*.h and m/*.h files.  Occasionally you may need to
693 redefine parameters used in `./lib-src/movemail.c'.
694
695 4) If you're going to use the make utility to build XEmacs, you will
696 still need to run `configure' first, giving the appropriate values for
697 the variables in the sections entitled "Things `configure' Might Edit"
698 and "Where To Install Things."  Note that you may only need to change
699 the variables `prefix' and `exec_prefix', since the rest of the
700 variables have reasonable defaults based on them.  For each Makefile
701 variable of this type, there is a corresponding configure option; for
702 example, to change the location of the lock directory, you might use
703
704          ./configure --lockdir=/nfs/xemacslock
705
706 The `configure' script is built from `configure.in' by the `autoconf'
707 program.  However, since XEmacs has configuration requirements that
708 autoconf can't meet, `configure.in' uses a marriage of custom-baked
709 configuration code and autoconf macros.  New versions of autoconf
710 could very well break this arrangement, so it may be wise to avoid
711 rebuilding `configure' from `configure.in' when possible.
712
713
714 BUILDING XEMACS BY HAND
715
716 Once XEmacs is configured, running `make' in the top directory performs
717 the following steps.
718
719 1) Run `make src/paths.h' in the top directory.  This produces
720 `./src/paths.h' from the template file `./src/paths.h.in', changing
721 the paths to the values specified in `./Makefile'.
722
723 2) Cd to `./lib-src' and run `make'.  This creates executables named
724 `ctags' and `etags' and `wakeup' and `make-docfile' and `digest-doc'
725 and `test-distrib'.  And others.
726
727 3) Cd to `./src' and Run `make'.  This refers to files in the `./lisp'
728 and `./lib-src' subdirectories using names `../lisp' and
729 `../lib-src'.
730
731 This creates a file `./src/xemacs' which is the runnable XEmacs,
732 assigning it a new build version number by incrementing the build
733 version stored in `./lisp/version.el'.
734
735 It also creates a file in `./lib-src' whose name is `DOC' followed by
736 the current XEmacs version.  This file contains documentation strings
737 for all the functions in XEmacs.  Each time you run make to make a new
738 xemacs, a new DOC file with a new name is made.  You must keep the DOC
739 file for an XEmacs version as long as you keep using that XEmacs
740 version.
741
742
743 INSTALLATION BY HAND
744
745 The steps below are done by running `make install' in the main
746 directory of the XEmacs distribution.
747
748 1) Copy `./lisp' and its subdirectories, `./etc', and the executables
749 in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
750
751 Strictly speaking, not all of the executables in `./lib-src' need be copied.
752 - The programs `cvtmail', `emacsserver', `env', `fakemail', `hexl',
753     `movemail', `timer', `vcdiff', `wakeup', and `yow' are used by
754     XEmacs; they do need to be copied.
755 - The programs `etags', `ctags', `emacsclient', `b2m', `rcs2log',
756     `gnuclient', `gnudoit', and `gnuattach' are intended to be run
757     by users; they are handled below.
758 - The programs `make-docfile' and `test-distrib' were
759     used in building XEmacs, and are not needed any more.
760 - The programs `digest-doc' and `sorted-doc' convert a `DOC' file into
761     a file for users to read.  There is no important reason to move them.
762
763 2) Copy the files in `./info' to the place specified in
764 `./lisp/site-init.el' or `./lisp/paths.el'.  Note that if the
765 destination directory already contains a file named `dir', you
766 probably don't want to replace it with the `dir' file in the XEmacs
767 distribution.  Instead, you should make sure that the existing `dir'
768 file contains an appropriate menu entry for the XEmacs info.
769
770 3) Create a directory for XEmacs to use for clash detection, named as
771 indicated by the PATH_LOCK macro in `./src/paths.h'.
772
773 4) Copy `./src/xemacs' to `/usr/local/bin', or to some other directory
774 in users' search paths.  `./src/xemacs' has an alternate name
775 `./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
776 `/usr/local/bin/xemacs' pointing to that alternate name, as an easy way
777 of installing different versions.
778
779 You can delete `./src/temacs'.
780
781 5) Copy the programs `b2m', `emacsclient', `ctags', `etags', `rcs2log',
782 `gnuclient', `gnudoit', and `gnuattach' from `./lib-src' to
783 `/usr/local/bin'.  These programs are intended for users to run.
784
785 6) Copy the man pages in `./etc' for xemacs, ctags, etags, and gnuserv
786 into the appropriate man directories.
787
788 7) The files in the `./src' subdirectory, except for `xemacs', are not
789 used by XEmacs once it is built.  The source would be handy for
790 debugging.
791
792
793 PROBLEMS
794
795 The most likely problem is that you forgot to read and follow the
796 directions in README.packages.  You can not have a working XEmacs
797 without downloading some additional packages.
798
799 See the file PROBLEMS in this directory for a list of various
800 problems sometimes encountered, and what to do about them.
801
802
803 If all else fails, please see etc/InstallGuide courtesy
804 of Jonathan Seth Hayward.