About These Emacs Builds

I build three different release flavors of Emacs:

  1. Official releases
    These should be more stable but are not released very often.
  2. Pretests
    These are much more stable and are meant for vetting the code for last minute bugs before a final release.
  3. Nightlies
    These are bleeding edge builds and may have bugs. They are built directly from the public Git repository. I try to build these nightly.

The scripts I run basically just configure and build right from the GNU source—I don't add any patches or any extraneous lisp packages. I do include the old Carbon icon on the disk image because I like it better than the new Cocoa icon but it is not enabled by default.

Emacs is built on various versions of Mac OS X: 10.6, 10.7 and 10.9 as of this writing. The 10.6 builds also build 32-bit and PowerPC binaries (only Emacs 24 builds PowerPC—Emacs dropped support for it in Emacs 25). The later OSes only build 64-bit builds. All the binaries are combined into a single executable and a small Ruby launcher chooses which binary to run based on the machine's OS and architecture.

Why not just use a fat binary? Because fat binaries can only hold 1 of each architecture and Emacs has multiple x86_64 architectures binaries.

Why are there multiple x86_64 binaries? Because the Emacs source does OS feature detection at compile time instead of at run-time. So if I build Emacs on 10.9 then it will contain hard-coded calls to 10.9 APIs and will not run on 10.6. If I compile it on 10.6, then it will also run on 10.9, but it won't take advantage of any of the features in 10.9.

Because of the unstable nature of nighly builds, and (sadly) the relative fragility of OS X running on VMs, there may be days missing here and there.

Note: Recent Emacs builds (since 2009-12-09) have 64 bit Intel support in the Universal Binary. Yay!

Also Note: Recent Emacs builds (since 2012-12-16) have been built against Mac OS 10.7 (Lion) and have Lion full screen support if you are running on Lion or Mountain Lion. They also have better retina display support and are code signed. Also Yay!

The Build Scripts

I rewrote the build scripts in 2014 to make them more modular so I easily control them with Jenkins. I also moved them from shell to Ruby, which cleaned things up tremendously. They still aren't documented super well, but they should be easier to read, at least.

David Caldwell