2

Running the default procedure:

~/emacs $ mkdir build
~/emacs $ cd build
~/emacs/build $ ../configure
~/emacs/build $ make

Results in building both the C source files and the Elisp source files.

What command (or target) do I have to pass to make in order for me to build JUST the C source files?

Basil
  • 12,383
  • 43
  • 69
John DeBord
  • 570
  • 3
  • 14

1 Answers1

4

Running the default procedure:

If you're in a checkout of the Emacs repository, as the OP title suggests, then there's a missing step there: the configure script is generated by the autogen.sh script, so you need to run the latter first.

If instead you're in a release tarball, then the generated configure script is already included.

Results in building both the C source files and the Elisp source files.

Note that release tarballs already include the byte-compiled .elc files, so they will not be recompiled by running make.

What command (or target) do I have to pass to make in order for me to build JUST the C source files?

The Emacs sources are organised such that many subdirectories have their own makefile, and most of the C sources are under the src subdirectory.

So I think the easiest way to build (mostly) just the C sources is via make -C src temacs. This builds a bare Emacs executable called temacs that lacks any of the usually preloaded Elisp libraries like lisp/subr.el or lisp/simple.el. Actually, this target will also generate some charset files, but at least it won't byte-compile Elisp.

Alternatively, make -C src will additionally byte-compile the necessary preloaded Elisp libraries, and dump a functional emacs executable. This avoids byte-compiling most auxiliary Elisp packages, such as Gnus or Org.

Note that there are also some auxiliary C sources under lib-src, such as those for emacsclient. Run make -C lib-src or similar to build those.

See (info "(elisp) Building Emacs") for more details on how Emacs is bootstrapped.

Basil
  • 12,383
  • 43
  • 69