A little personal reminder on how I usually compile Emacs… After
cloning and cd
‘ing in the source directory:
./autogen.sh
Then:
./configure \
--without-compress-install \
--with-native-compilation=aot \
--with-json \
--with-mailutils \
--with-tree-sitter \
--with-gif \
--with-png \
--with-jpeg \
--with-rsvg \
--with-tiff \
--with-imagemagick
Some of these flags are a bit arbitrary: this is a starting point, and
I should look into this. Actually, starting from Emacs 30, we can read
this in etc/NEWS
:
Native JSON support is now always available; libjansson is no longer used. No external library is required. The ‘–with-json’ configure option has been removed. ‘json-available-p’ now always returns non-nil and is only kept for compatibility.
So with this version of Emacs, the command becomes:
./configure \
--without-compress-install \
--with-native-compilation=aot \
--with-mailutils \
--with-tree-sitter \
--with-gif \
--with-png \
--with-jpeg \
--with-rsvg \
--with-tiff \
--with-imagemagick
Let’s then build Emacs:
make -j $(nproc)
…and that’s it! Of course many packages will probably miss, but I’ll add them on this page the next time I compile Emacs from a fresh system.
I usually create a symbolic link in a directory on my path:
ln -s ~/src/emacs/src/emacs emacs