2014-01-08 23:24:54 +00:00
|
|
|
|
Building and Installing Emacs from the Repository
|
2002-06-17 06:08:23 +00:00
|
|
|
|
|
2019-05-26 16:32:46 +00:00
|
|
|
|
The Emacs repository is hosted on Savannah. The following Git command
|
|
|
|
|
will clone the repository to the 'emacs' subdirectory of the current
|
|
|
|
|
directory on your local machine:
|
|
|
|
|
|
2023-02-04 22:24:37 +00:00
|
|
|
|
git clone https://git.savannah.gnu.org/git/emacs.git
|
2019-05-26 16:32:46 +00:00
|
|
|
|
|
|
|
|
|
To build the repository code, simply run 'make' in the 'emacs'
|
|
|
|
|
directory. This should work if your files are freshly checked out
|
2021-11-24 06:58:11 +00:00
|
|
|
|
from the repository, and if you have the proper tools installed; the
|
|
|
|
|
default configuration options will be used. Other configuration
|
|
|
|
|
options can be specified by setting a 'configure' variable, for
|
|
|
|
|
example:
|
|
|
|
|
|
|
|
|
|
$ make configure="--prefix=/opt/emacs CFLAGS='-O0 -g3'"
|
|
|
|
|
|
|
|
|
|
If the above doesn't work, or if you have special build requirements,
|
|
|
|
|
the following information may be helpful.
|
2014-12-14 01:57:46 +00:00
|
|
|
|
|
2014-01-08 23:24:54 +00:00
|
|
|
|
Building Emacs from the source-code repository requires some tools
|
|
|
|
|
that are not needed when building from a release. You will need:
|
2009-01-11 23:07:18 +00:00
|
|
|
|
|
2011-03-20 23:58:23 +00:00
|
|
|
|
autoconf - at least the version specified near the start of
|
2012-07-09 04:52:49 +00:00
|
|
|
|
configure.ac (in the AC_PREREQ command).
|
2015-01-26 19:21:45 +00:00
|
|
|
|
git - at least Git 1.7.1. If your repository was created by an older
|
|
|
|
|
Git version, you may need to reclone it.
|
2011-03-20 23:58:23 +00:00
|
|
|
|
makeinfo - not strictly necessary, but highly recommended, so that
|
2016-08-29 01:23:25 +00:00
|
|
|
|
you can build the manuals. GNU Texinfo 4.13 or later should work.
|
2011-03-20 23:58:23 +00:00
|
|
|
|
|
2014-04-17 06:40:25 +00:00
|
|
|
|
To use the autotools, run the following shell command to generate the
|
autogen.sh now configures git only on request
* autogen.sh (do_autoconf, do_git): New vars.
Support new arguments --help, all, autoconf, git.
By default, just do autoconf-related configuration, not git.
Prefer 'echo' to 'cat <<EOF ...', as this tends to avoid temp files.
If GNU cp is available, use it to backup .git/config before
changing it. When configuring git, chatter about what is being
done, and configure git to check hashes. Avoid some duplicate
file name specification when creating git hooks.
* GNUmakefile (ALL_IF_GIT): New macro.
(configure): Use it.
* INSTALL.REPO: Suggest './autogen.sh all'.
2016-02-03 07:11:36 +00:00
|
|
|
|
'configure' script and some related files, and to set up your git
|
|
|
|
|
configuration:
|
2011-03-20 23:58:23 +00:00
|
|
|
|
|
2017-08-12 15:56:52 +00:00
|
|
|
|
$ ./autogen.sh
|
2009-01-11 23:07:18 +00:00
|
|
|
|
|
2014-04-17 06:40:25 +00:00
|
|
|
|
You can then configure your build as follows:
|
2011-03-20 23:58:23 +00:00
|
|
|
|
|
|
|
|
|
$ ./configure
|
2011-02-27 19:36:45 +00:00
|
|
|
|
|
2014-04-17 06:40:25 +00:00
|
|
|
|
The 'configure' script has many options; run './configure --help' to
|
|
|
|
|
see them. For example, if you want later builds to go faster, albeit
|
|
|
|
|
sometimes doing the wrong thing if you update the build procedure, you
|
|
|
|
|
can invoke './configure -C'. After configuring, build Emacs as follows:
|
2002-06-17 06:08:23 +00:00
|
|
|
|
|
|
|
|
|
$ make
|
|
|
|
|
|
2019-05-16 17:42:27 +00:00
|
|
|
|
You can also type 'make check' to test and 'make install' to install
|
|
|
|
|
Emacs.
|
2002-06-17 06:08:23 +00:00
|
|
|
|
|
2014-04-17 06:40:25 +00:00
|
|
|
|
Occasionally the file 'lisp/loaddefs.el' (and similar automatically
|
|
|
|
|
generated files, such as 'esh-groups.el', and '*-loaddefs.el' in some
|
|
|
|
|
subdirectories of 'lisp/', e.g., 'mh-e/' and 'calendar/') will need to be
|
2008-06-08 19:11:43 +00:00
|
|
|
|
updated to reflect new autoloaded functions. If you see errors (rather
|
|
|
|
|
than warnings) about undefined lisp functions during compilation, that
|
2010-10-12 03:45:41 +00:00
|
|
|
|
may be the reason. Finally, sometimes there can be build failures
|
2015-09-11 18:04:24 +00:00
|
|
|
|
related to '*loaddefs.el' (e.g., "required feature ‘esh-groups’ was not
|
2010-10-12 03:45:41 +00:00
|
|
|
|
provided"). In that case, follow the instructions below.
|
2008-04-09 07:14:20 +00:00
|
|
|
|
|
|
|
|
|
To update loaddefs.el (and similar files), do:
|
2003-10-01 02:09:47 +00:00
|
|
|
|
|
|
|
|
|
$ cd lisp
|
2008-06-18 02:58:24 +00:00
|
|
|
|
$ make autoloads
|
2003-10-01 02:09:47 +00:00
|
|
|
|
|
2014-04-17 06:40:25 +00:00
|
|
|
|
If either of the above partial procedures fails, try 'make bootstrap'.
|
2017-05-06 20:20:57 +00:00
|
|
|
|
If CPU time is not an issue, 'make bootstrap' is a more thorough way
|
2021-11-24 06:58:11 +00:00
|
|
|
|
to rebuild, avoiding spurious problems. 'make bootstrap' rebuilds
|
|
|
|
|
Emacs with the same configuration options as the previous build; it
|
|
|
|
|
can also be used to rebuild Emacs with other configuration options by
|
|
|
|
|
setting a 'configure' variable, for example:
|
|
|
|
|
|
|
|
|
|
$ make bootstrap configure="CFLAGS='-O0 -g3'"
|
|
|
|
|
|
|
|
|
|
To rebuild Emacs with the default configuration options, you can use:
|
|
|
|
|
|
|
|
|
|
$ make bootstrap configure=default
|
2017-05-06 20:20:57 +00:00
|
|
|
|
|
|
|
|
|
Occasionally, there are changes that 'make bootstrap' won't be able to
|
2017-10-10 09:36:59 +00:00
|
|
|
|
handle. The most thorough cleaning can be achieved by 'git clean -fdx'
|
2017-05-06 20:20:57 +00:00
|
|
|
|
which will leave you with only files from the git repository. Here
|
|
|
|
|
are some faster methods for a couple of particular error cases:
|
|
|
|
|
|
Prefer stdbit.h to count-one-bits.h etc
C23's <stdbit.h> in the long run should be better supported than
Gnulib's count-one-bits.h and similar headers, so switch to the
C23 primitives, with a Gnulib fallback for platforms lacking C23.
* admin/merge-gnulib (GNULIB_MODULES): Remove count-leading-zeros,
count-one-bits, count-trailing-zeros. Add stdc_bit_width,
stdc_count_ones, stdc_trailing_zeros.
* lib/count-leading-zeros.c, lib/count-leading-zeros.h:
* lib/count-one-bits.c, lib/count-one-bits.h:
* lib/count-trailing-zeros.c, lib/count-trailing-zeros.h: Remove.
* lib/stdbit.c, lib/stdbit.in.h, lib/stdc_bit_width.c:
* lib/stdc_count_ones.c, lib/stdc_leading_zeros.c:
* lib/stdc_trailing_zeros.c, m4/stdbit_h.m4:
New files, copied from Gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* src/data.c: Do not include count-one-bits.h, count-trailing-zeros.h.
Instead, rely on lisp.h including stdbit.h.
(Flogcount, Fbool_vector_count_population)
(Fbool_vector_count_consecutive): Use stdbit.h macros instead of
count-one-bits.h and count-trailing-zeros.h macros.
(shift_right_ull, count_one_bits_word, pre_value)
(count_trailing_zero_bits): Remove; no longer needed.
* src/lisp.h: Include stdbit.h instead of count-leading-zeros.h.
(elogb): Use stdbit.h macro instead of count-leading-zeros.h macro.
2024-05-12 21:22:58 +00:00
|
|
|
|
/usr/bin/m4:aclocal.m4:9: cannot open `m4/stdbit_h.m4': No such file or directory
|
2017-05-06 20:20:57 +00:00
|
|
|
|
|
|
|
|
|
This can be fixed with 'rm aclocal.m4'.
|
|
|
|
|
|
|
|
|
|
make: *** No rule to make target 'lib/Makefile.am', needed by 'lib/Makefile.in'
|
|
|
|
|
|
|
|
|
|
This can be fixed with 'rm lib/Makefile Makefile'.
|
2008-04-08 17:15:33 +00:00
|
|
|
|
|
2014-01-08 23:24:54 +00:00
|
|
|
|
Because the repository version of Emacs is a work in progress, it will
|
2011-06-25 17:51:03 +00:00
|
|
|
|
sometimes fail to build. Please wait a day or so (and check the
|
|
|
|
|
archives of the emacs-buildstatus, emacs-devel, and bug-gnu-emacs
|
|
|
|
|
mailing lists) before reporting such problems. In most cases, the
|
|
|
|
|
problem is known about and is just waiting for someone to fix it.
|
|
|
|
|
This is especially true for Lisp compilation errors, which are almost
|
|
|
|
|
never platform-specific.
|
2008-09-01 21:28:30 +00:00
|
|
|
|
|
2004-02-17 23:47:32 +00:00
|
|
|
|
|
2007-02-11 00:15:39 +00:00
|
|
|
|
|
2024-01-02 01:47:10 +00:00
|
|
|
|
Copyright (C) 2002-2024 Free Software Foundation, Inc.
|
2014-04-17 06:40:25 +00:00
|
|
|
|
|
2007-02-11 00:15:39 +00:00
|
|
|
|
This file is part of GNU Emacs.
|
|
|
|
|
|
2008-05-07 07:35:58 +00:00
|
|
|
|
GNU Emacs is free software: you can redistribute it and/or modify
|
2007-02-11 00:15:39 +00:00
|
|
|
|
it under the terms of the GNU General Public License as published by
|
2008-05-07 07:35:58 +00:00
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
(at your option) any later version.
|
2007-02-11 00:15:39 +00:00
|
|
|
|
|
|
|
|
|
GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
2017-09-13 22:52:52 +00:00
|
|
|
|
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|