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