librelist archives

« back to archive

Universal (fat) binary for OS X Intel

Universal (fat) binary for OS X Intel

From:
Eric Watson
Date:
2011-09-29 @ 16:42
For some time now, Shoes has only been available for OS X in a 64-bit 
flavor. Recently, we have added support for building a 32-bit binary 
and/or a "universal" (fat) binary that includes both 32-bit and 64-bit 
intel binaries.

Please help me discover any wrinkles in the OS X build. I want to make 
sure the universal binary runs on all sorts of Snow Leopard/Lion machines 
(I don't think it can run on Leopard or previous, or on ppc). I also want 
to make sure Shoes will *build* on any Snow Leopard/Lion machine 
(following the instructions below).

Download a pre-built (zipped) universal binary: http://db.tt/KouieJQP

Build your own Shoes. Here are some notes:

To build a universal binary Shoes, you have to start with universal binary
dependencies.

Most dependencies are installed using Homebrew, 
http://mxcl.github.com/homebrew/. We are using a number of custom formulas
for dependencies. These should be brought in automatically, without 
modifying your Homebrew install. They will be built with the appropriate 
architecture.

However, to build a universal Shoes, you must be running a universal ruby.
We do not install ruby as a dependency, because you already have ruby 
installed. You have to take care of this on your own. For me, this 
involved blowing out my rvm install `rvm implode`, reinstalling rvm, and 
then building like this: `rvm install ruby-1.9.2 -C 
--with-arch=x86_64,i386`.

From here, basically, you will be following the instructions on the wiki, 
https://github.com/shoes/shoes/wiki/Building-Shoes-on-Mac-OS-X-10.6-and-10.7,
except that you might have to set an environment variable *first*:

To build universal, use either kind of machine, `export SHOES_OSX_ARCH=universal`
To build 32-bit, use a 32-bit machine, `export SHOES_OSX_ARCH=i386`
To build 64-bit, use a 64-bit machine, you don't have to do anything different.

Note that we don't provide for building a slim 64-bit binary on a 32-bit 
machine, or vice versa.

Thanks for trying on Shoes! 

Eric