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?

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.