GNU Emacs Installation Guide
-Copyright (C) 1992, 1994, 1996-1997, 2000-2014 Free Software Foundation,
+Copyright (C) 1992, 1994, 1996-1997, 2000-2015 Free Software Foundation,
Inc.
See the end of the file for license conditions.
`src/config.h' file containing system-dependent definitions.
Running the `make' utility then builds the package for your system.
+Building Emacs requires GNU make, <http://www.gnu.org/software/make/>.
+On most systems that Emacs supports, this is the default `make' program.
+
Here's the procedure to build Emacs using `configure' on systems which
are supported by it. In some cases, if the simplified procedure fails,
you might need to use various non-default options, and maybe perform
SOURCE-DIR/configure
where SOURCE-DIR is the top-level Emacs source directory.
- This may not work unless you use GNU make.
3. When `configure' finishes, it prints several lines of details
about the system configuration. Read those details carefully
X libjpeg for JPEG: http://www.ijg.org/
X libtiff for TIFF: http://www.remotesensing.org/libtiff/
X libgif for GIF: http://sourceforge.net/projects/giflib/
+ librsvg2 for SVG: http://wiki.gnome.org/action/show/Projects/LibRsvg
If you supply the appropriate --without-LIB option, 'configure' will
omit the corresponding library from Emacs, even if that makes for a
DETAILED BUILDING AND INSTALLATION:
-(This is for a Unix or Unix-like system. For MS-DOS and MS Windows 3.X,
-see msdos/INSTALL. For later versions of MS Windows, see the file
-nt/INSTALL. For GNUstep and Mac OS X, see nextstep/INSTALL.)
-
-1) Make sure your system has enough swapping space allocated to handle
-a program whose pure code is 1.5 MB and whose data area is at
-least 2.8 MB and can reach 100 MB or more. If the swapping space is
-insufficient, you will get an error in the command `temacs -batch -l
-loadup dump', found in `./src/Makefile.in', or possibly when
-running the final dumped Emacs. (This should not be an issue
-on any recent system.)
-
-Building Emacs requires about 230 MB of disk space (including the
-Emacs sources). Once installed, Emacs occupies about 120 MB in the file
-system where it is installed; this includes the executable files, Lisp
-libraries, miscellaneous data files, and on-line documentation. If
-the building and installation take place in different directories,
-then the installation procedure momentarily requires 230+120 MB.
+(This is for a Unix or Unix-like system. For GNUstep and Mac OS X,
+see nextstep/INSTALL. For non-ancient versions of MS Windows, see
+the file nt/INSTALL. For MS-DOS and MS Windows 3.X, see msdos/INSTALL.)
+
+1) See the basic installation summary above for the disk space requirements.
2) In the unlikely event that `configure' does not detect your system
type correctly, consult `./etc/MACHINES' to see what --host, --build
Gtk or Motif, if you have the Xaw3d library installed (see
"Image support libraries" above for Xaw3d availability).
-You can tell configure where to search for GTK by specifying
-`--with-pkg-config-prog=PATH' where PATH is the pathname to
-pkg-config. Note that GTK version 2.6 or newer is required for Emacs.
+You can tell configure where to search for GTK by giving it the
+argument PKG_CONFIG='/full/name/of/pkg-config'.
Emacs will autolaunch a D-Bus session bus, when the environment
variable DISPLAY is set, but no session bus is running. This might be
--without-tiff for TIFF image support
--without-gif for GIF image support
--without-png for PNG image support
+ --without-rsvg for SVG image support
Use --without-toolkit-scroll-bars to disable Motif or Xaw3d scroll bars.
Use --without-sound to disable sound support.
-Use --without-all if you want to build a small executable with the minimal
-dependencies on external libraries, at the cost of disabling most of the
-features that are normally enabled by default. Using --without-all is
-equivalent to --without-sound --without-dbus --without-libotf
---without-selinux --without-xft --without-gsettings --without-gnutls
---without-rsvg --without-xml2 --without-gconf --without-imagemagick
---without-m17n-flt --without-jpeg --without-tiff --without-gif
---without-png --without-gpm --without-file-notification. Note that
---without-all leaves X support enabled, and using the GTK2 or GTK3
+Use --without-all for a smaller executable with fewer dependencies on
+external libraries, at the cost of disabling many features. Although
+--without-all disables libraries not needed for ordinary Emacs
+operation, it does enable X support, and using the GTK2 or GTK3
toolkit creates a lot of library dependencies. So if you want to
build a small executable with very basic X support, use --without-all
--with-x-toolkit=no. For the smallest possible executable without X,
use --without-all --without-x. If you want to build with just a few
features enabled, you can combine --without-all with --with-FEATURE.
-For example, you can use --without-all --with-dbus to build with DBus
-support and nothing more.
+For example, you can use --without-all --without-x --with-dbus to
+build with DBus support and nothing more.
Use --with-wide-int to implement Emacs values with the type 'long long',
even on hosts where a narrower type would do. With this option, on a
about possibly-questionable C code. This is intended for developers
and is useful with GNU-compatible compilers. On a recent GNU system
there should be no warnings; on older and on non-GNU systems the
-generated warnings may still be useful.
-
-Use --enable-link-time-optimization to enable link-time optimizer, which
-is available in GNU compiler since version 4.5.0. If your compiler is not
-GNU or older than version 4.5.0, this option does nothing. If `configure'
-can determine number of online CPUS on your system, final link-time
-optimization and code generation is executed in parallel using one job
-per each available online CPU.
+generated warnings may still be useful, though you may prefer building
+with 'make WERROR_CFLAGS=' so that the warnings are not treated as
+errors.
+
+Use --disable-silent-rules to cause 'make' to give more details about
+the commands it executes. This can be helpful when debugging a build
+that goes awry. 'make V=1' also enables the extra chatter.
+
+Use --enable-link-time-optimization to enable link-time optimizer. If
+you're using GNU compiler, this feature is supported since version 4.5.0.
+If `configure' can determine number of online CPUS on your system, final
+link-time optimization and code generation is executed in parallel using
+one job per each available online CPU.
+
+This option is also supported for clang. You should have GNU binutils
+with `gold' linker and plugin support, and clang with LLVMgold.so plugin.
+Read http://llvm.org/docs/GoldPlugin.html for details. Also note that
+this feature is still experimental, so prepare to build binutils and
+clang from the corresponding source code repositories.
The `--prefix=PREFIXDIR' option specifies where the installation process
should put emacs and its data files. This defaults to `/usr/local'.
`configure' doesn't do any compilation or installation itself.
It just creates the files that influence those things:
`./Makefile' in the top-level directory and several subdirectories;
-and `./src/config.h'. For details on exactly what it does, see the
-section called `CONFIGURATION BY HAND', below.
+and `./src/config.h'.
When it is done, `configure' prints a description of what it did and
creates a shell script `config.status' which, when run, recreates the
Here's an example of a `configure' invocation, assuming a Bourne-like
shell such as Bash, which uses these variables:
- CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
- CFLAGS='-O3' LIBS='-lfoo -lbar' ./configure
+ ./configure \
+ CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
+ CFLAGS='-O3' LIBS='-lfoo -lbar'
-(this is all one long line). This tells `configure' to instruct the
+(this is all one shell command). This tells `configure' to instruct the
preprocessor to look in the `/foo/myinclude' directory for header
files (in addition to the standard directories), instruct the linker
to look in `/bar/mylib' for libraries, pass the -O3 optimization
For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses
pkg-config to find where those libraries are installed.
If you want pkg-config to look in special directories, you have to set
-the environment variable PKG_CONFIG_PATH to point to the directories
-where the .pc-files for those libraries are.
-For example:
+PKG_CONFIG_PATH to point to the directories where the .pc-files for
+those libraries are. For example:
- PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig' \
- ./configure
-
-The work of `configure' can be done by editing various files in the
-distribution, but using `configure' is easier. See the section called
-"CONFIGURATION BY HAND" below if you want to do the configuration
-yourself.
+ ./configure \
+ PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig'
3b) To build in a separate directory, go to that directory
and run the program `configure' as follows:
where Emacs's configure script is located. `configure' looks for the
Emacs source code in the directory that `configure' is in.
-To build in a separate directory, you must use a version of `make'
-that supports the `VPATH' variable, such as GNU `make'.
-
-(Do not try to build in a separate directory by creating many links
-to the real source directory--there is no need, and installation will
-fail.)
-
4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
Lisp code you want Emacs to load before it is dumped out. Use
site-load.el for additional libraries if you arrange for their
are installed in the following directories:
`/usr/local/bin' holds the executable programs users normally run -
- `emacs', `etags', `ctags', `emacsclient', and
- `grep-changelog'.
+ `emacs', `etags', `ctags', `emacsclient'.
`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
`VERSION' stands for the number of the Emacs version
9) You are done! You can remove executables and object files from
the build directory by typing `make clean'. To also remove the files
that `configure' created (so you can compile Emacs for a different
-configuration), type `make distclean'. If you don't need some, or all
-of the input methods from the Leim package, you can remove the
-unneeded files in the leim subdirectories of your site's lisp
-directory (usually /usr/local/share/emacs/VERSION/).
-
+configuration), type `make distclean'.
MAKE VARIABLES
when running make in the subdirectories.
-CONFIGURATION BY HAND
-
-This should not be necessary and is not recommended. Instead of
-running the `configure' program, you have to perform the following steps.
-
-1) Copy `./src/config.in' to `./src/config.h'.
-
-2) Edit `./src/config.h' to set the right options for your system.
-
-3) Create `Makefile' files in various directories from the
-corresponding `Makefile.in' files. This isn't so hard, just a matter
-of editing in appropriate substitutions for the @...@ constructs.
-
-The `configure' script is built from `configure.ac' by the
-`autogen.sh' script, which checks that `autoconf' and other build
-tools are sufficiently up to date and then runs the build tools.
-
-BUILDING GNU EMACS BY HAND
-
-Once Emacs is configured, running `make' in the top directory performs
-the following steps.
-
-1) Run `make epaths-force' in the top directory. This produces
-`./src/epaths.h' from the template file `./src/epaths.in', changing
-the paths to the values specified in `./Makefile'.
-
-2) Go to directory `./lib' and run `make'. This creates include files
-and libraries used in later steps.
-
-3) Go to directory `./lib-src' and run `make'. This creates
-executables named `etags', `make-docfile', and others.
-
-4) Go to directory `./src' and run `make'. This refers to files in
-the `./lisp', `./lib', and `./lib-src' subdirectories using names
-`../lisp', `../lib', and `../lib-src'.
-
-This creates a file `./src/emacs' which is the runnable Emacs,
-which has another name that contains a version number.
-Each time you do this, that version number increments in the last place.
-
-It also creates a file in `./etc' whose name is `DOC' followed by the
-current Emacs version. This file contains documentation strings for
-all the functions in Emacs. Each time you run make to make a new
-emacs, a new DOC file with a new name is made. You must keep the DOC
-file for an Emacs version as long as you keep using that Emacs version.
-
-
-INSTALLATION BY HAND
-
-The steps below are done by running `make install' in the main
-directory of the Emacs distribution.
-
-1) Copy `./lisp' and its subdirectories, `./etc', and the executables
-in `./lib-src' to their final destinations, as selected in `./src/epaths.h'.
-
-Strictly speaking, not all of the executables in `./lib-src' need be copied.
-- The programs `hexl', `movemail', `profile', and `rcs2log'
- are used by Emacs; they do need to be copied.
-- The programs `etags', `ctags', and `emacsclient' are intended to be
- run by users; they are handled below.
-- The programs `make-docfile' and `test-distrib' were
- used in building Emacs, and are not needed any more.
-
-2) Copy the files in `./info' to the place specified in
-`./lisp/site-init.el' or `./lisp/info.el'. Note that if the
-destination directory already contains a file named `dir', you
-probably don't want to replace it with the `dir' file in the Emacs
-distribution. Instead, you should make sure that the existing `dir'
-file contains an appropriate menu entry for the Emacs info.
-
-3) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
-in users' search paths. `./src/emacs' has an alternate name
-`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
-`/usr/local/bin/emacs' pointing to that alternate name, as an easy way
-of installing different versions.
-
-You can delete `./src/temacs'.
-
-4) Copy the programs `emacsclient', `ctags', and `etags' from `./lib-src'
-to `/usr/local/bin'. These programs are intended for users to run.
-
-5) Copy the man pages in `./doc/man' into the appropriate man directory.
-
-6) The files in the `./src' subdirectory, except for `emacs', are not
-used by Emacs once it is built. However, it is very desirable to keep
-the source on line for debugging.
-
-
PROBLEMS
See the file `./etc/PROBLEMS' for a list of various problems sometimes